sed:stream editor :一次處理一行內容,處理時,把當前的行儲存在臨時緩衝區,處理完後,輸送到螢幕
sed [引數] '命令' file
p ##顯示
d ##刪除
a ##新增
c ##替換
i ##插入
1.p:顯示
sed -n '/\:/p' /etc/fstab
sed -n '/^#/p' /etc/fstab
sed -n '/^#/!p' /etc/fstab
sed -n '2,6p' /etc/fstab
sed -n '2,6!p' /etc/fstab
2.d:刪除
sed '/^uuid/d' /etc/fstab
sed '/^#/d' /etc/fstab
sed '/^$/d' /etc/fstab
sed '1,4d' /etc/fstab
3.a:新增
sed '/hello/aworld' westos
sed 's/hello/hello world/g' westos
sed 's/hello/hello\nworld/g' westos
4.c:替換
sed '/hello/chello world' westos
5.i:插入
[root@server mnt]# sed '/hello/iworld\nwestos' westos
world
westos
hello
6.-i:改變原檔案內容
sed -i 's/westos/redhat/' passwd
sed -i 's/westos/redhat/g' passwd ##全域性替換 也可以這樣修改 sed 's/\//#/g' /etc/fstab
1.awk處理機制:根據模式一次從檔案中抽取一行文字,對這行文字進行切片(預設使用空白字元作為分隔符)
[root@server mnt]# cat test
this | is | a | file
$1 $2 $3 $4
awk '' test ##$0表示輸出一整行
awk '' test
awk '' test
awk '' test ##顯示兩個字段
awk -f ":" '' /etc/passwd ##指定分隔符
2.awk常用變數
awk '' /etc/passwd ##輸出檔名,和當前操作的行號
awk -f: '' /etc/passwd ##輸出每次處理的行號,以及當前以":"為分隔符的字段個數
總結:awk '' /etc/passwd
3.begin{}:讀入第一行文字之前執行的語句,一般用來初始化操作
{}:逐行處理
end{}:處理完最後以行文字後執行,一般用來處理輸出結果
awk 'begin '
awk -f: 'begin end ' passwd ##檔案開頭加redhat,末尾加westos,列印行號和內容
awk -f: '/bash$/' /etc/passwd ##輸出以bash結尾的
awk -f: 'nr==3 ' /etc/passwd
awk -f: 'nr % 2 == 0 ' /etc/passwd ##偶數行
awk -f: 'nr >=3 && nr <=5 ' /etc/passwd
awk 'beginend' linux.txt ##統計文字總欄位個數
4.if單分支語句
awk -f: 'begin}end' /etc/passwd ##統計登入shell為bash的使用者
5.if雙分支
awk -f: 'beginelse}end' /etc/passwd ##統計uid小於等於500和大於500的使用者個
6.for迴圈
awk 'begin}'
shell文字處理
最於檔案的操作以前都是用高階程式語言來操作的。今天恰好需要將乙個目錄中的檔案資訊儲存到sqlite3資料庫中 我用linux中的工具和shell來作為自己畢業設計做原型開發 下面記錄一下這裡用到的部分知識,以作備忘。用ls命令來說明 1.關於shell中的管道和重定向問題。這個知識基礎,這裡不再說了...
shell 文字處理
最近優化指令碼,將幾套指令碼合併,比如,處理nand手機的指令碼和處理emmc手機的指令碼是不一樣的,這導致我們的指令碼有很多個版本。手機側只有busybox,所以不能使用功能強大的python來處理文字。花了半天時間,發現雖然語法比較怪異,但也能簡潔的完成任務。if e proc emmc the...
Shell的文字處理
1.grep定義 grep 命令是一種強大的文字搜尋工具,根據使用者指定的 模式 對目標文字進行匹配檢 查,列印匹配到的行 由正規表示式或者字元及基本文字字元所編寫的過濾條件 global search regular expression and print out the line 全面搜尋研究...