歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

sed和awk的參數總結

(一)、關於sed的使用
sed是一種對它的輸入的每一行進行一系列操作的流式編輯器,sed被用來作為過濾器
語句結構:sed ‘script’ files
【參數舉例】
 1、-n, --quiet, --silent
                 取消自動打印模式空間,只打印匹配行,用-n時一般要用p。
 2、-p,打印匹配行【注只用-p時文件所有內容都打印出來,但是匹配行打印兩次】
3、-d 刪除所對應的行
     sed '1,5d' test 刪除test文件的第1到5行
     sed '9,$d' test 刪除test文件的第9行到最後一行。$代表文件的最後一行。
4、-s,用於字符串的替換
     sed -n  's/bc/ggggggg/gp' test
5、-y,用於字符的變換
   sed 'y/被變換的字符序列/變換的字符序列/' 文件
   深入分析:sed 'y/bc/BC/' test  被變換的字符序列和變換的字符序列長度必須相同,這是和s的區別。/pattern1/s/pattern2/pattern3/ :1~3都是正則表達式,匹配規則pattern1的每一行中
的pattern2被替換為pattern3。s命令提供了&操作,使得在pattern3中可以重復使用匹配字
符串pattern2。
   sed -n '/hello/s/go/good/p' test 將含有hello行所在行的go替換為good
   sed -n '/hello/s/go/good/2p' test 將含有hello行所在行的第二個go替換為good
   sed -n '/hello/s/go/good/gp' test 將含有hello行所在行的所有的go替換為good
   sed -n '/hello/s/go/&od/gp' test  &表示為已經替代的go,本句意思為將含有hello
行所在行的所有的go替換為good
   sed '2,5c No 2-5 number' test  test文件中的第2到5行用o 2-5 number替代
6、-i 編輯原文件(此選項慎用,如果使用則原文件就會被修改,無法恢復)。
  插入的用法:
  • 在文件file的第2行之前插入“xxx”    sed '2i xxx' file
  • 在file的第2行之後插入“xxx”    sed '2a xxx' file
   file的第2行和第3行之前插入“xxx”   sed '2,3i xxx' file
   在file的第2行至最後一行之前插入“xxx”   sed '2,$i xxx' file
   總結:在指定行之前插入使用的是“i”,而在指定行之後插入是使用“a”。

(二)、關於awk的使用總結
awk是一種程序語言,用來處理數據和產生報告。
1、關於NR(在工作job)中的記錄數
    awk '{if(NR%3)print $1 ; }' test  輸出文件test中不是3的倍數的行的第一列
   awk '{print $1 "\t"$3}' test 輸出文件test的每一行的第一列和第三列中間用8字節隔開
   awk '{printf "%s\t%s\n",$1,$3}' 也可以用printf對文件進行輸出,作用如上
2、FS  輸入字段分隔符
   awk -F":" '{print $3}' /etc/passwd 以冒號為分割符取出每一行的第三列
   awk '{FS=":"} $3 < 10 {print $1 "\t " $3}' 以冒號為分割符,當第三列
   的值小於10的情況下,打印出該行的第一和第三列
3、awk的內部變量
   FILENAME當前輸入文件的名稱
   NR當前輸入文件的總行數
   統計空行在文件中的百分比
   if [ -f $1 ];then
   awk ‘/^$/{file=FILENAME;x=x+1;next;}
 END {printf “%s %s
%3.1f\n”,file,x,(100*(x/NR))}’          $1
 else  echo “ERROR”
 fi
   NF當前行($0)記錄中的字段數
   OFS輸出字段的分隔符
   FS輸入字段的分隔符
改變FS的默認值 awk ‘BEGIN {FS=“:”;} {print $1,$6;}’/etc/passwd
或 awk –F: ‘{print $1,$6;}’ /etc/passwd

Copyright © Linux教程網 All Rights Reserved