1、grep中的分組和引用怎麼使用?
基本正則:例項:():將乙個或多個字元**在一起,當做乙個整體處理;
() \1:模式從左側起,第乙個左括號以及與之匹配的右括號之間的模式所匹配到的字元;
擴充套件正則:
();()\1;
a|b:表示a或者b
先建立乙個檔案file,取出第一列等於第四列,第二列等於第五列的行
liming 18 nan liming 18
zhangsan 18 nan wangwu 19
zhangsan 18 nan lisi 20
zhangsan 18 nan zhangsan 18
aaa 18 nan aaa 21
輸入命令得出結果:
[root@li ~
]# grep "^\([a-z]\+\>\)[[:space:]]\([[:digit:]]\+\>\).*\1 \2" file
liming 18 nan liming 18
zhangsan 18 nan zhangsan 18
詳細解釋:是正規表示式的分組,首先寫出\(\),第一列為單詞,所以將[a-z]寫出,由於是多個字元所以寫出\+(表示匹配前面的字元一次以上),再進行詞尾錨定,後面有空格,所以輸入[[:space:]],後面加\1(表示匹配第乙個左括號以及與之匹配的右括號之間的模式所匹配到的字元,即第四列)。此時,第一列匹配成功。開始匹配第二列:第二列以數字開始,所以輸入[[:digit:]],再輸入\+,進行詞尾錨定,後面加\2引用,後接file檔案即可。
2、sed的替換操作
s/old/new/
將每行的第乙個old替換為new
s/old/new/3
將每行的第3個old替換為new
s/old/new/g
將所有的old替換為new
3、awk中的自定義變數
(1) -v var=value
(2)在program中直接定義
(1)
# awk -v test='hello gawk' '' /etc/fstab
hello gawk
hello gawk
hello gawk
(2)# awk -f: 'begin ' /etc/passwd
username:root
username:bin
username:daemon
username:adm
匹配/etc/passwd第三域大於1000的顯示出完整資訊
[root@localhost ~
]# awk -f:
''/etc/passwd
列印$5包含root的行
[root@localhost ~
]# awk -f:
'$5~/root/ '
/etc/passwd
root:x:0:
0:root:
/root:
/bin/bash
非精確匹配
[root@localhost ~
]# awk -f:
'$4~/99/ '
/etc/passwd
nobody:x:99:
99:nobody:/:
/sbin/nologin
polkitd:x:
999:
998:user for polkitd:/:
/sbin/nologin
精確匹配
[root@localhost ~
]# awk -f:
'$4=="99" '
/etc/passwd
nobody:x:99:
99:nobody:/:
/sbin/nologin
不匹配:使用『 !
~』[root@localhost ~
]# awk -f:
'$0 !~/99/'
/etc/passwd
設定大小寫
[root@localhost ~
]# awk '/[rr]oot/'
/etc/passwd
匹配第乙個域的第四個字元是't'
[root@localhost ~
]# awk '$1~ /^...t/'
/etc/passwd
[root@localhost ~
]# awk '$1~ /^...t/'
/etc/passwd
root:x:0:
0:root:
/root:
/bin/bash
shutdown:x:6:
0:shutdown:
/sbin:
/sbin/shutdown
halt:x:7:
0:halt:
/sbin:
/sbin/halt
systemd-network:x:
192:
192:systemd network
postfix:x:89:
89::
/var/spool/postfix:
/sbin/nologin
列印出/etc/passwd第三域之和
[root@localhost ~
]# awk -f:
' end'
/etc/passwd
1655
顯示只有四個字元的名,可以用length函式
[root@localhost ~
]# awk -f:
''/etc/passwd
root
sync
halt
mail
顯示所有以乙個r或s開頭的名
[root@localhost ~
]# awk -f:
''/etc/passwd
root
sync
shutdown
systemd-network
Linux文字處理工具(grep sed awk)
文字處理 說明grep c str tmp test 列印符合要求的行的數目。grep i str tmp test 輸出符合要求的行,忽略str大小寫。grep n str tmp test 輸出符合要求的行及行號。grep v str tmp test 輸出不符合要求的行。grep a2 str...
shell檔案處理工具
vim etc resolve.conf 檢視dns 6.shell指令碼命令 1.diff diff file file 比較兩個檔案的不同 c 顯示周圍的行 u 按照一格式統一輸出生成補丁 r 比較兩個目錄中檔案的不同 pattch file file.path 打補丁 b 備份原檔案 2.gr...
檔案處理工具類
public class fileutils if environment.media mounted.equals state dir.isdirectory dir.canwrite return false 複製單個檔案 param oldpath param newpath public s...