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命令,對每行數據進行分析,如下:




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM