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