正則表達式的使用精集

#過濾所有目錄
[root@localhost tmp]# ldd /usr/bin/vim
	linux-vdso.so.1 =>  (0x00007fffedffd000)
	libncurses.so.5 => /usr/lib64/libncurses.so.5 (0x00000031b5200000)
	libselinux.so.1 => /lib64/libselinux.so.1 (0x00000031b3e00000)
	libacl.so.1 => /lib64/libacl.so.1 (0x00000031b4e00000)
	libgpm.so.1 => /usr/lib64/libgpm.so.1 (0x00000031b4600000)
	libperl.so => /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/CORE/libperl.so (0x00000031b5600000)
	libresolv.so.2 => /lib64/libresolv.so.2 (0x00000031b6200000)
	libutil.so.1 => /lib64/libutil.so.1 (0x00000031b5a00000)
	libc.so.6 => /lib64/libc.so.6 (0x00000031b2a00000)
	libm.so.6 => /lib64/libm.so.6 (0x00000031b3600000)
	libdl.so.2 => /lib64/libdl.so.2 (0x00000031b2e00000)
	libpthread.so.0 => /lib64/libpthread.so.0 (0x00000031b3200000)
	libsepol.so.1 => /lib64/libsepol.so.1 (0x00000031b4200000)
	/lib64/ld-linux-x86-64.so.2 (0x00000031b2600000)
	libattr.so.1 => /lib64/libattr.so.1 (0x00000031b3a00000)
	libnsl.so.1 => /lib64/libnsl.so.1 (0x00000031b7200000)
	libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00000031b4a00000)
[root@localhost tmp]# ldd /usr/bin/vim | grep -o "/[^[:space:]]\{1,\}"
/usr/lib64/libncurses.so.5
/lib64/libselinux.so.1
/lib64/libacl.so.1
/usr/lib64/libgpm.so.1
/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/CORE/libperl.so
/lib64/libresolv.so.2
/lib64/libutil.so.1
/lib64/libc.so.6
/lib64/libm.so.6
/lib64/libdl.so.2
/lib64/libpthread.so.0
/lib64/libsepol.so.1
/lib64/ld-linux-x86-64.so.2
/lib64/libattr.so.1
/lib64/libnsl.so.1
/lib64/libcrypt.so.1
[root@localhost tmp]# which ls
alias ls='ls --color=tty'
	/bin/ls
[root@localhost tmp]# which ls | grep -o "/[^[:space:]]\{1,\}"
/bin/ls

截取文件的父目錄

[root@localhost tmp]# export DPATH=/usr/local/file/name/test.file
[root@localhost tmp]# echo ${DPATH%/*}
/usr/local/file/name

截取目錄路徑中的文件名

[root@localhost tmp]# echo ${DPATH##*/}
test.file

使用sed命令的N、n、P、p

[root@localhost tmp]# seq 5 | sed -n 'N;P' 
1
3
#N追加下一行到模式空間,模式空間內容爲1\n2,P顯示模式空間中的第一行內容,以上是打印1到5的基數數
[root@localhost tmp]# seq 5 | sed -n 'n;P'
2
4
#n爲讀取下一行覆蓋模式空間內容
[root@localhost tmp]# seq 5 | sed -n '$!N;P'
1
3
5
[root@localhost tmp]# 
#1到5爲5行,N每次匹配2行,到第5行的時候不能發現第6行,故不處理第5行內容,$!N是強制使用結尾行。

使用sed查找以abc結尾的行並且以bcd開始的行

[root@localhost tmp]# cat test 
sdlfjsldfabc
bcdksdlfjlksdfl
abcdksdlfjlksdfl
babcdksdlfjlksdfl
[root@localhost tmp]# sed -n 'N;/abc\>\n\<bcd/p' test
sdlfjsldfabc
bcdksdlfjlksdfl
#N讀取兩行到模式空間,\>錨定詞尾 \n換行符 \<錨定詞首 //p 固定模式使用
[root@localhost tmp]# sed -n 'N;/dfl\>\n\<bab/p' test
abcdksdlfjlksdfl
babcdksdlfjlksdfl

使用sed命令查找替換到自己想要的結果一:

[root@localhost tmp]# cat test 
333.xx223x.uuu.com
[root@localhost tmp]# sed -r 's/([[:alnum:]]+).([[:lower:]]+)[[:alnum:]]*.*/\2\1/' test 
xx333

使用sed命令查找替換到自己想要的結果二:

[root@localhost tmp]# cat test 
123.abc456defg.uuu.com
[root@localhost tmp]# sed -r 's/([[:alnum:]]+).([[:lower:]]+)[[:digit:]]+([[:lower:]]+).*/\2\3\1/' test 
abcdefg123


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章