sed(查找替換) 與awk(提取字段)

通常: sed 處理列  awk處理行 比較方便

Sed是一個基本的查找替換程序     sed -i   "s/^@//g"     文件  #原地操作原文件,進行替換

cat my.txt|sed s/a/A/ >n.txt    (不指定列數,默認是包含a的第一列)將1.txt文件中包含a的第一列中的a替換爲A,並將結果寫入n.txt文件中。該語句也可以在shell腳本中使用

cat my.txt|sed s/a/A/2 >n.txt   指定第二列,將1.txt文件中包含a的第二列中的a替換爲A,並將結果寫入n.txt文件中。

cat './1.txt ' |sed s/a/A/g >n2.txt     將1.txt文件中的所有a替換爲A,並將結果寫入n2.txt文件中。該語句也可以在shell腳本中使用

ps -ef | grep tomcat|awk ' {print $1 "-" $2} '  從標準輸入中提取第一個、第二個字段

awk 用來從文本文件中提取字段。缺省地,字段分割符是空格,可以使用-F指定其他分割符,如:head -n 5 /etc/passwd|awk -F: '{print $1 , $2}'


 


 sed: Sed是一個基本的查找替換程序。可以從標準輸入(比如命令管道)讀入文本,並將結果輸出到標準輸出(屏幕)。


該命令採用正則表達式(見參考)進行搜索。

不要和shell中的通配符相混淆。比如:將linuxfocus 替換爲LinuxFocus :cat text.file | sed  s/linuxfocus/LinuxFocus/ > newtext.file


sed s/a/A/  從標準輸入中讀取文本,將文本中的a替換爲A (默認是將含有a的第一列替換爲A)



如果指定要替換的列數,則從含有要替換的字符對應的列中進行替換,如下:


sed s/a/A/2  從標準輸入中讀取文本,將文本中含有的a的第二列替換爲A 

sed s/a/A/3 從標準輸入中讀取文本,將文本中含有的a的第三列替換爲A


如果想要替換所有的字符串,則使用sed s/a/A/g ,如下圖:


awk 用來從文本文件中提取字段。缺省地,字段分割符是空格,可以使用-F指定其他分割符。

cat file.txt | awk -F, '{print $1"," $3 }'這裏我們使用,作爲字段分割符,同時打印第一個和第三個字段。

如果該文件內容如下: Adam Bor, 34, IndiaKerry Miller, 22, USA,命令輸出結果爲:AdamBor, IndiaKerry Miller, USA


也可以使用cut命令,對每行數據進行分析,如下:



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