Linux字符串截取和處理命令 cut、printf、awk、sed、sort、wc


1. cut [選項] 文件名

-f  列號  #提取第幾列(分隔符默認為\t)

-d  分隔符  #指定分隔符

例如:cut -f 2 a.txt  #截取文件a.txt內容的第二列(列號從1開始)

   cut -f 2,4 a.txt  #截取文件a.txt內容的第二列和第四列

   cut -d  ":"  -f 1,3 /etc/passwd  #截取文件passwd文件的第1列和第三列,以:分割取其中的第一列和第三列

 

2. printf '輸出類型 輸出格式'  輸出內容

輸出類型:

%ns  輸出字符串,n是數字,指代輸出幾個字符

%ni  輸出整數。n是數字,指代輸出幾個數字

%m.nf  位數和小數位數。例如:%8.2f 代表輸出8位數,其中2位是小數,6位是整數

輸出格式:

\a  輸出警告聲音

\b  輸出退格鍵,也就是BackSpace鍵

\f  消除屏幕

\n  換行

\r  回撤

\t  水平制表符

\v  垂直制表符

 

舉例:

printf '%s %s %s\n' 1 2 3 4 5 6  #表示每三個位一組輸出,並加換行符

printf '%s\t%s\t%s\t' $(cat a.txt)  #表示以4列的形式輸出

 

3. awk '條件1{動作1}條件2{動作2}...' 文件名

awk '{printf $2 "\t" $6 "\n"}' a.txt  #輸出文件a.txt的第二列和第6列

 

4. sed [選項] '[動作]' 文件名  #說明:動作必須用引號引起來

選項:

-n  一般sed命令會把所有數據都輸出到屏幕。如果加入此選擇,則只會把經過sed命令處理的行輸出到屏幕。

-e  允許對輸入數據應用多條sed命令編輯

-i  用sed的修改結果直接修改讀取的數據的文件,而不是修改屏幕輸出

動作:

a\  追加,在當前行后添加一行或多行。添加多行時除最后一行外,每行末尾需要用"\"代表數據未完結。

c\  行替換,用c后面的字符替換原數據行,替換多行時除最后一行外,每行末尾需要用"\"代表數據未完結。

i\  插入,在當前插入一行或多行,插入多行時,除最后一行外每行末尾需用"\"代表數據未完結。

d  刪除,刪除指定的行

p  打印,輸出指定的行

s  字符串替換,用一個字符串替換另外一個字符串。格式為"行范圍 s/舊字符串/新字符串/g"

sed可以接收管道符的輸出結果

舉例:

sed '2p' a.txt  #輸出第2行后,又把所有內容輸出一遍

sed -n '2p' a.txt  #只輸出第二行

 

sed '2,4d' a.txt  #刪除第2到4行,只刪除屏幕輸出,不會更改文件本身的內容

sed '2a hello' a.txt  #在第二行插入一行 hello

sed '2i hello' \

  word' a.txt  #在第二行前插入多行 hello 一行 word一行

sed '2c no person' a.txt  #用no person 替換第二行

sed '4s/99/55/g' a.txt  #把第4行的99替換為55

sed -i '4s/99/55/g' a.txt  #把第4行的99替換為55,修改的是原文件而不是屏幕輸出

sed -i 's/99/55/g' a.txt  #s前不加行號時表示替換整個文件中匹配的字符串

sed -e 's/Liming//g;s/Gao//g' a.txt  #-e表示允許多個條件執行,把Liming替換為空,把Gao替換為空

5. sort [選項] 文件名  #排序

選項:

-f  忽略大小寫

-n  以數值型進行排序,默認使用字符串型排序

-r  反向排序

-t  指定分隔符,默認分隔符是制表符

-k n[,m]  按照指定的字段范圍排序。從第n字段開始,m字段結束(默認到行尾)

6. wc [選項] 文件名  #統計

選項:

-l  只統計行數

-w  只統計單詞數

-m  只統計字符數

 


免責聲明!

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



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