溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

shell文件處理工具

發(fā)布時(shí)間:2020-07-29 22:05:28 來源:網(wǎng)絡(luò) 閱讀:358 作者:Taxing祥 欄目:移動(dòng)開發(fā)

vim /etc/resolve.conf 查看dns
6.shell腳本命令
 1.diff
diff        file file   比較兩個(gè)文件的不同
    -c         顯示周圍的行
    -u          按照一格式統(tǒng)一輸出生成補(bǔ)丁
    -r          比較兩個(gè)目錄中文件的不同
pattch      file    file.path   打補(bǔ)丁
    -b              備份原文件
2.grep
grep    關(guān)鍵字符    文件|目錄   在文件或目錄中查找含有關(guān)鍵字的行
grep    -i              忽略大小寫
    -n              顯示關(guān)鍵字所在行
    -c              顯示過濾結(jié)果的行數(shù)
    -v              反向過濾
    -E      “關(guān)鍵字1|關(guān)鍵字2”    過濾多個(gè)關(guān)鍵字
    -r      目錄        在目錄中查找含有關(guān)鍵字的文件
注意:^關(guān)鍵字   以關(guān)鍵字開頭
      關(guān)鍵字$   以關(guān)鍵字結(jié)尾   
^root 以root開頭
root$ 以root結(jié)尾
3.cut
cut 截取字符
cut -d  分隔符  指定分隔符
cut -f  1,7    顯示指定的列
cut -c      顯示指定字符
cut -d " " -f 10    截取空格后第十列到下一個(gè)分隔符空格之間的內(nèi)容
4.sort 排序
sort
    -n  純數(shù)字排序
    -u  去掉重復(fù)的
    |uniq -c去掉重復(fù)并統(tǒng)計(jì)重復(fù)個(gè)數(shù)
    -t  指定分隔符
    -k  指定列
sort -t : -k 2 file -nu
5.uniq
sort file | uniq -c 去掉多余并統(tǒng)計(jì)重復(fù)次數(shù) 
         -d 顯示多余行
         -u 顯示唯一的行
6.tr
tr 'a-z' 'A-Z' file
sed 's/原字符/替換字符/g' file
sed -e '策略1 ' -e '策略2 'file  多個(gè)策略用-e
sed -i file 把轉(zhuǎn)入后的文件輸出到指定文件
sed '3,5s/原字符/替換字符/' file
sed xd 屏蔽指定行
sed xp 復(fù)制指定行
sed -n xp 只顯示指定行
腳本
#!/bin/bash
MAX=$( wc- l $1 | cut -d " " -f 1)
for NUM in $( seq $MAX )
do
        USERNAME=$(sed -n ${NUM}p$1)
        PASSWD=$(sed in ${NUM}p $2)
        useradd $USERNAME
        echo $PASSWD | passwd --stdin$USERNAMR
done

7.awk   數(shù)據(jù)處理工具,將一行分成數(shù)個(gè)段進(jìn)行處理,以字段為最小的處理單位

awk '條件類型1{動(dòng)作1} 條件類型2{動(dòng)作2}...' filename
[root@taxing ~]# last -n 5
kiosk    pts/0        :0               Wed Nov  9 19:46  still logged in  
kiosk    pts/0        :0              Wed Nov  9 18:57 - 19:46  (00:48)   
kiosk    :0           :0               Wed Nov  9 18:57  still logged in  
reboot   system boot  3.10.0-327.el7.x Thu Nov 10 02:56 -19:59  (-6:-57)  
kiosk    :0           :0               Wed Nov  9 17:55 - 17:55  (00:00)   

wtmp begins Wed Sep 28 00:38:05 2016
[root@taxing ~]# last -n 5 | awk '{print $1 "\t" $3}'
kiosk   :0
kiosk   :0
kiosk   :0
reboot  boot
kiosk   :0

$0 代表一整行的數(shù)據(jù)
內(nèi)置變量
NF 每一行($0)擁有的字段總數(shù)
NR 目前awk處理的是第幾行的數(shù)據(jù)
FS 目前的分隔字符,默認(rèn)是空格鍵
[root@taxing ~]# last -n 5 | awk '{print $1 "lines:" NR "\tcolumes: "NF}'
kiosklines:1     columes: 10
kiosklines:2     columes: 10
kiosklines:3     columes: 10
rebootlines:4    columes: 11
kiosklines:5     columes: 10
lines:6  columes: 0
wtmplines:7  columes: 7
條件類型
[root@taxing ~]# cat /etc/passwd | awk '{FS=":"} $3<10 {print $1"\t" $3}'
root:x:0:0:root:/root:/bin/bash
bin 1
daemon  2
adm 3
lp  4
sync    5
shutdown    6
halt    7
mail    8
第一行還是默認(rèn)的以空格鍵為分隔符,想要從第一行開始就在分隔符 {FS=":"} 前加 BEGIN 關(guān)鍵字  除此之外還有END
[root@taxing ~]# cat /etc/passwd | awk 'BEGIN{FS=":"} $3<10 {print$1 "\t" $3}'
root    0
bin 1
daemon  2
adm 3
lp  4
sync    5
shutdown    6
halt    7
mail    8
awk命令進(jìn)行計(jì)算
name    1st 2nd 3th
zed 12321   34123   41234
timo    23413   34124   35213
lol 34223   12441   22341
 cat file | awk 'NR==1{printf "%10s%10s %10s %10s %10s\n",$1,$2,$3,$4,"TOTAL"}NR>=2{TOTAL=$2+$3+$4 printf"%10d %10d %10d %10d%10.2f\n,$1,$2,$3,$4,TOTAL}'







 


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI