sed,awk,grep,trap,trap,cut,tr,curl,find
^ 行首定位符???????????????
^love 匹配所有以love開頭的行
$? 行尾定位符
love$? 匹配所有以love結尾的行
. ?單個任意字符
l..e? 匹配以l開始后跟兩個字符再跟一個e的字符串
*? 重復0到多個星號前面的字符
a* 匹配0個或多個a的字符串
[]匹配一組字符的任意一個
[Ll]ove? 匹配Love或love的字符串
[x-y]匹配指定范圍的一個字符
[A-Z]ove? 匹配大寫字符開頭后跟ove的字符串
[^]匹配不在指定組內的字符
[^A-Z]? 匹配不是大寫字母的任意字符
\? 轉義字符用來轉義元字符
love\.? 匹配love后跟一個.的字符
!? 取反
+ 表示一個或多個
xyz+ 一個或多個z
? 表式0個或一個
xyz? 0個或一個z
RE元字符
\< 詞首定位符\<love 匹配love開頭的詞
|> 詞尾定位符love\> 匹配love結尾的詞
\<bin\> 匹配一個單詞
\(..\) 給匹配的字符打上標簽
(lov)able\1er/ 模式lov被保存為標簽1用\1表示
查找一個字符串lov后跟上able,再跟上lov再接上er即:lovablelover
x{m}和x{m,}和x{m,n}字符x重復出現:m次,至少m次,至少m次,并不超過n次
o{5,10} 匹配包含5~10個o的字符串
| 或者
echo "tom and jerry"|sed -r 's/(tom) and (jerry)/\2 and \1/'
echo "tom g1,g2,g3 jerry"|cut -d" " -f2
echo "abc def"| sed -r 's/([a-z]+) ([a-z]+)/\2 \1/'
echo "abc def"| sed -r 's/([a-Z0-9]+) ([a-Z0-9]+)/\2 \1/'
echo "abcgood"|grep -E "abc(good)*" --color 匹配abc后有一個或多個good的行
echo "abchidhn"|sed -r 's/(.)(.*)/\1/' 用()切割字符
echo "abc" |grep -E "abc{3}" {}之前字符c出現的次數為3次
echo "abc defd xyz"|grep -E "\<[a-Z]{3}\>"匹配有三個字母的
echo "abc"| grep -E "abc+" --color
grep -E "^root|^tom" /etc/passwd
echo "abc user@sina.com.cn def"|grep -E "[a-Z0-9._]+@[a-Z0-9.]+\.[a-Z]{2,3}
" --color?
ps:HOST=$(/bin/hostname)
將()里的命令執行后的結果賦值給HOST變量
grep awk sed 是基于正則表達式設計的
用雙引號將正則表達式引起來
sed ?循環 一行一行的處理文件
sed -n '/abc/p' file 默認會打印模式空間的內容
行中匹配abc的打印出來 ?-r ?支持擴展分割符,-n不讓他默認打印模式空間?
sed '/abc/p' file1
讀取file1的第一行到pattern space(臨時緩沖區, 內存)
對pattern space中的這一行進行/abc/p操作
將pattern space中的這一行打印出來
清空pattern space
讀取file1的下一行到pattern space
sed root@10.0.2.253 sed 's/abc/def' file ?遠程登錄后修改file里的內容
sed -n '5p' file 把第五行打印出來
sed -n '$p' file ?把最后一行打印出來
sed -n '1,3p' file ?把一到三行打印出來
sed -n '1,~3p' file ?從第一行開始打印三行
sed -n ?'1p; 3p' ?file ?打印第一行和第三行
sed -n '1,/def/p' file 從第一行開始直到碰到def的行全部打印出來
sed ?-i '3i aaaaaaa' file ?在第三行的前面加上aaaaaaa
sed? -i '$a ?aaaaa' file ?在最后行加入aaaaa
sed ?-i '/^tom/i ?aaaaaa' file ?在以tom開頭的行前一行加上aaaaaa
sed ?-i ?'s/abc/def/' file 改每一行的第一個abc成def
sed ?-i ?'s/abc/def/g' file 改每一行的所有abc成def
sed ?-i ?'s/abc/def/3' file 改每一行的第三個abc成def
sed ?-i ?'1,2s/abc/def/' file 改一到兩行abc成def
sed ?-i ?'1,2s/^.*$/def/' file 改一到兩行成def
sed ?-i ? '4c aaaaaaaaa' file ?把第四行改為aaaaaaaa
sed? -i ?'/^SELINUX/c ?selinux ' 把所有以SELINUX開頭的行改為selinux
sed ?-i '/^abc/s/tom/jerry/' ?file ?先找到以abc開頭的行將這一行的tom改為jerry
sed -i '/abc/,/^def/s/123/456/' file ?將abc開頭的行和def開頭的行之間的行的123改為456
s 換匹配的字段 c換匹配的行
sed? -i ?'4d' 把第四行刪除
sed? -i ?'/^tom/d' file 刪除以tom開頭的所有行
sed? -i ?'/^$/d' file ?刪除空行
sed? -i ?'/^\s$/d' file ?刪除開頭為空行?? \s表示空格或tab
sed -i '/^mike/s/^/#' file 將mike行注釋
sed '3s/abc/def/; 5s/abc/yyy/g' file1
sed 's/abc/def/; s/hij/xyz/' file1
sed -i -e '1s/jerry/tom/; ? -e 3s/mike/xyz/' ?file ?多條一起執行用-e
sed '/ADDR/s/^/#/' file1???? 行首加#
sed '/ADDR/s/^#//' file1???? 去行首#
sed -ri /^#ServerName.*:80$/s/^#// /etc/selinux/config
找出/etc/seliunx/config文件中以#ServerName開頭以:80結尾的行
并將#替換成空白
& 保存查找串以便在替換串中引用
sed 's/tom/&jerry/' file1
? ? ? ?
范圍匹配
sed '/abc/,/xyz/s/tom/jerry/' file1 abc到xyz中的
sed '/tom/,/jerry/d' file1
sed -n '/abc/,/xyz/p' file1
sed '1,/tom/d' file1 第1行到第1個匹配tom的行
? ? ??
引用變量
var1="root"
sed "/$var1/c aixocm" file1
sed -ri "/IPADDR/s/[0-9.]+/$ip/" ifcfg-eth0
sed -i "s|^${i}1*|#&|" /etc/fstab
#------------------------------------------------------------------------
awk 按行處理行里字段 ?循環命令
默認以空格作為分割符 默認打印整行$0 -F分割符 ? 制定分割符
awk ?'BEGIN{print ?"aaaa"}/tom/{print $2}END{print "bbbbbbb"}' ?file1
先執行BEGIN里的語句 從文件中讀取第一行是否匹配/tom如果有則執行沒有就不執行
到讀完后,再運行END的語句 ?可以選用BEGIN ?匹配項 ENG。
awk '/^mike/{print $2}' file
awk 'NR==2{print $2}' ?file ? ?NR是行號 NF字段數
awk 'NR==2||NR==4{print $2}' file ? 只讀兩個固定的行號
awk ?'{print $0}' file ?$0 整個行
awk 'BENGIN{FS=":" OFS=" ?"}/bash$/{print $0}' file
FS 指定了分割符
OFS 指定了輸出的字段分割符
tr ":" "" 將冒號改為空格
awk 'BEGIN{i=10;echo$i}'
awk -v v1=$a -v v2=$b ?'BEGIN{print v1+v2}' ?將bash的值傳給awk
awk -F: -v v1=$a '$0~v1'{print $0} ~ 匹配條件
awk ?'BEGIN{i=0;}{i++}END{print i}' file
awk '/^root/{$3+=10;print $3}' file
awk '$1~"root"{print $1}' file
awk '$1==500{print $1}' file ?第一個字段為500
awk '$NF~"bash"{print $1}' file ?最后一個字段是否有bash
awk ?'$3>=500&&$3<=503{print $2}' file
awk ?-F: -v v1=$a '$1~^v1' ?file 打印出以變量a開頭的行
awk ?-F: '{if($1~/^root/)print $1}' file ? 打印出第一個字段以root開頭的行的第一個字段
next ?直接讀下一行
continue
exit 結束不讀了
break
int()整數化
awk ?'system("useradd" $2)' file ? system()調用系統的命令
df -Th|grep "/$"|awk '{print $6}'|sed 's/%//'
df后截取某個字段并替換
tr 針對字符進行操作,單字符處理工具, 而不是字符串處理工具
cat file1 | tr "abc" "xyz"
a都替換成x, b都替換成y, c都替換成z,并不是將字符串abc替換成字符串xyz
echo "abc 11a22bc" |tr “abc” “xyz” 結果:xyz 11x22yz
tr "abc" "xyz" ?<file ?處理文件
tr "a-z" "A-Z" <file ?將小寫字母轉成大寫字母
tr ":" "\m"
echo "abdcdd"| tr -d "abc"將abc三個字符刪除
cat file |tr -d “a-z”
echo “aaaaaaaaxcxxx cccccccc”|tr -s"abc" 將重復的abc字符壓縮成一個字符
sort 排序 ?文件沒改變
默認以空白作為分割符以第一個字段進行排序 (按字符串排asic)
sort -n file ?以第一個字段的數值排序
sort -r 倒序
sort -k2 ?以第二個字段排
sort -t:以:分割字段
sort -t: -k3nr /etc/passwd
注意:先sort再uniq
uniq 去重復行 不改變文件
uniq file ?只改變相鄰的重復行
uniq -c ?顯示相鄰的重復多少行
uniq -u 只顯示沒有相鄰重復的行
cut ?分割字符 ?默認分割符為tab鍵
cut -d: -f1-f3 ?file ?指定分割符為:只要1 ?3字段
cut -d: -f1,3,5
echo ?“addfgg” |cut -c3 ?取第三個字符
grep
grep -n ”root“ /etc/passwd ?過濾出來加行數
grep -c ”root“ /etc/passwd ?過濾出來的行號
grep -v ”root“ /etc/passwd ?取反
grep -q ”root“ /etc/passwd ?過濾出來的不顯示
grep -w ”root“ /etc/passwd ?過濾出來有單詞root的行
grep -o ”root“ /etc/passwd ?過濾出來root單詞
grep -ro ”root“ 目錄 ? ? 過濾出來目錄中文件里的有root的行
grep -i ”root“ /etc/passwd ?忽略大小寫
grep -E ”root“ /etc/passwd ?啟用擴展正則
grep -f file file1 ? 過濾出file和file1中共同擁有的行
grep -f file file1 -v ?過濾出file有file1沒有的行
grep -x ”root“ file ?過濾file中只含有root的的行
find
find . -nouser ?把沒有主人的文件找出來
find ?. ?+size +10000c ?找出文件大于10000個字節的文件
find / -maxdepth 1 ?-name ?“*.conf” ?-maxdepth ?不會找子文件
find . -perm ?600 ?把權限為600的找出來
find . -name “*.sh” ?|xargs ?rm -rf {} 把文件找出后交給rm處理
find . -name “*.sh” ?|xargs -I{} rm -rf {} ?用-I 指定用什么表示查出的內容4
trap 屏蔽信號
trap '' 2 ?屏蔽中斷信號,不做什么
trap 'ls;pwd;date' 2 當出發中斷信號(ctrl+c) 執行ls;pwd;date;
trap 2 還原
curl
curl -o a.html http://www.sohu.com/index.html 將搜狐的首頁下載下載到a.html
curl -O ?http://www.sohu.com/index.html 將搜狐的首頁下載下來
curl -T file ? ftp://10.0.2.253/ 將file文件上傳到10.0.2.253中 ?用ftp協議
轉載于:https://blog.51cto.com/menglinux/1437330
總結
以上是生活随笔為你收集整理的sed,awk,grep,trap,trap,cut,tr,curl,find的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【oracle】手动安装EM
- 下一篇: RBD和AOF持久化对比