Linux常用基本命令:三劍客命令之-awk輸入輸出分隔符


輸入分隔符,英文原文為field separator,此處簡稱為FS,默認是空白字符(即空格),awk默認以空白字符為分隔符對每一行進行分割。

輸出分割符,英文原文為output field separator,此處簡稱為OFS,awk將每行分割后,輸出在屏幕上的時候,awk默認的輸出分割符也是空格。

1,用F選項,指定輸入分隔符

ghostwu@dev:~/linux/awk$ cat ghostwu.txt 
ghostwu-20-man
zhangsan-22-woman
lisi-23-woman
ghostwu@dev:~/linux/awk$ awk '{print $1, $2, $3}' ghostwu.txt 
ghostwu-20-man  
zhangsan-22-woman  
lisi-23-woman 

如果不指定分隔符,默認用空格,是不能切割ghostwu-20-man 這一行的 每一列的

ghostwu@dev:~/linux/awk$ awk -F- '{print $1, $2, $3}' ghostwu.txt 
ghostwu 20 man
zhangsan 22 woman
lisi 23 woman

F指定'-'為分隔符,同理,先利用sed把ghostwu.txt分割符變成#,然后再用awk的F選項指定分隔符#來進行切割

ghostwu@dev:~/linux/awk$ sed -i 's/\-/#/g' ghostwu.txt 
ghostwu@dev:~/linux/awk$ cat ghostwu.txt 
ghostwu#20#man
zhangsan#22#woman
lisi#23#woman
ghostwu@dev:~/linux/awk$ awk -F# '{print $1, $2, $3}' ghostwu.txt 
ghostwu 20 man
zhangsan 22 woman
lisi 23 woman

也可以使用內置變量FS 配合-v選項指定輸入分隔符

ghostwu@dev:~/linux/awk$ awk -v FS='#' '{print $1, $2, $3}' ghostwu.txt 
ghostwu 20 man
zhangsan 22 woman
lisi 23 woman

而-F,就是options的一種,用於指定輸入分隔符。

-v也是options的一種,用於設置變量的值。

2,使用OFS指定輸出分隔符,OFS是內置變量,配合v選項一起使用

ghostwu@dev:~/linux/awk$ cat ghostwu.txt 
ghostwu#20#man
zhangsan#22#woman
lisi#23#woman
ghostwu@dev:~/linux/awk$ awk -v FS='#' '{print $1, $2, $3}' ghostwu.txt 
ghostwu 20 man
zhangsan 22 woman
lisi 23 woman
ghostwu@dev:~/linux/awk$ awk -v FS='#' -v OFS='--->' '{print $1, $2, $3}' ghostwu.txt 
ghostwu--->20--->man
zhangsan--->22--->woman
lisi--->23--->woman

注意的在輸出列的時候,列與列之間要用逗號,如果不用逗號,就變成連接在一起輸出

ghostwu@dev:~/linux/awk$ awk -v FS='#' -v OFS='--->' '{print $1 $2 $3}' ghostwu.txt 
ghostwu20man
zhangsan22woman
lisi23woman
ghostwu@dev:~/linux/awk$ 

 


免責聲明!

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



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