《Linux Shell指令碼攻略》 筆記 第四章:高效文本處理

來源:互聯網
上載者:User

標籤:shell 高效 文本 處理

《Linux Shell指令碼攻略》 筆記 第四章:高效文本處理1、IP地址的Regex: [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}2、grep用法//在多級目錄中對文本進行遞迴檢索[[email protected] program_test]# grep "yang" ./ -Rn./test.txt:6:laoyang
./right.txt:1:1 yang man
//忽略大小寫匹配[[email protected] program_test]# echo hello world | grep -i "HELLO"
hello world//遞迴搜尋所有.c和.cpp檔案[[email protected] program_test]# grep "main()" . -r --include *.{c,cpp}
./hello.c:int main()
sin.c:int main()
hello.cpp:int main()
//匹配某個結果之後的幾行[[email protected] program_test]# echo -e "a\nb\nc\na\nb\nc"| grep a -A 1
a
b
--
a
b
3、cut命令cut,將文本按照列進行切割的小工具。//-d分界符; -f要提取的列[[email protected] program_test]# cut -d ":" -f5 --complement passwd_yang
root:x:0:0:/root:/bin/bash
bin:x:1:1:/bin:/sbin/nologin

[[email protected] program_test]# cut -c1-5 passwd_yang 
root:
bin:x
daemo
adm:x
//統計特定檔案中的詞頻
[[email protected] program_test]# cat word_freq.sh #!/bin/bashif [ $# -ne 1 ];thenecho "Usage: $0 filename"exit -1fifilename=$1egrep -o "\b[[:alpha:]]+\b" $filename | awk '{ count[$0]++ } END { printf("%-14s%s\n","word","Count");for(ind in count) { printf("%-14s%d\n",ind,count[ind]); } }'



4、sed命令(stream editor 流編輯器)適用文本處理.//1.替換,從第3個開始替換[[email protected] program_test]# echo this thisthisthis | sed ‘s/this/THIS/3g‘
this thisTHISTHIS//2.刪掉空白行[[email protected] program_test]# sed ‘/^$/d‘ choice.sh
//3.已匹配的字串標記&[[email protected] program_test]# echo this is an example | sed ‘s/\w\+/[&]/g‘
[this] [is] [an] [example]
//4.替換舉例.[[email protected] program_test]# cat sed_data.txt 
11 abc 111 this 9 file contains 111 11 88 numbers 0000
[[email protected] program_test]# cat sed_data.txt |  sed ‘s/\b[0-9]\{3\}\b/NUMBER3/g‘
11 abc NUMBER3 this 9 file contains NUMBER3 11 88 numbers 0000
5、awk工具,用於資料流,對列、行進行操作。//1)、awk的實現方式[[email protected] program_test]# echo -e "line1\nline2" | awk ‘BEGIN { print "begin...\n" } { print } END { print "end...\n" }‘
begin...

line1
line2
end...
//2)、awk實現累加求和[[email protected] program_test]# seq 5 | awk ‘BEGIN { sum=0; print "summary:" } { print $1"+"; sum+=$1; } END { print "=="sum }‘summary:
1+
2+
3+
4+
5+
==15
//3)、awk 設定定界符.//-F 定界符  $NF 一行中的最後一個欄位[[email protected] program_test]# awk -F: ‘{ print $1 "\t" $NF }‘ /etc/passwd
root /bin/bash
bin /sbin/nologin
daemon /sbin/nologin
//4)、列印檔案中的每個字母
[[email protected] program_test]# cat read_each_word.sh cat hello.c | ( while read line;do #echo $line;for word in $line;do#echo $word;for((i=0;i<${#word};i++))doecho ${word:i:1} ;donedonedone )


//5)、列印第4-6行內容[[email protected] program_test]# seq 100 | awk ‘NR==4, NR==6‘
4
5
6
//6)、awk實作類別似tac逆序的功能.
[[email protected] program_test]# seq 9 | awk '{ lifo[NR]=$0; lno=NR } END { print "NR = " NR; for(;lno>-1;lno--) { print lifo[lno]; } }'NR = 9987654321


銘毅天下

轉載請標明出處,原文地址:http://write.blog.csdn.net/postedit/42364823

如果感覺本文對您有協助,請點擊‘頂’支援一下,您的支援是我堅持寫作最大的動力,謝謝!


《Linux Shell指令碼攻略》 筆記 第四章:高效文本處理

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.