linux 中awk命令 制定 输入行分隔符、列分割符、输出行分隔符、输出列分隔符的几种方法

 

001、指定列的输入分隔符

[root@PC1 test]# ls
a.txt
[root@PC1 test]# cat a.txt
aa:bb:cc
11:22:33
55:88:33
[root@PC1 test]# awk -F ":" '{print $2}' a.txt       ## 使用-F 选项
bb
22
88
[root@PC1 test]# awk 'BEGIN{FS = ":"} {print $2}' a.txt   ## 使用BEGIN 
bb
22
88
[root@PC1 test]# awk '{print $2}' FS=":" a.txt       ## 在末尾直接指定
bb
22
88

 

 

 

002、指定行的输入分隔符

[root@PC1 test]# ls
a.txt
[root@PC1 test]# cat a.txt                      ## 测试数据
aa:bb_cc
11:22_33
55:88_33
[root@PC1 test]# awk 'BEGIN{RS="_"} {print $0}' a.txt      ## 使用BEGIN指定行的输入分隔符
aa:bb
cc
11:22
33
55:88
33

[root@PC1 test]# awk '{print $0}' RS="_" a.txt        ## 直接指定行的输入分隔符
aa:bb
cc
11:22
33
55:88
33

 

003、指定列的输出分隔符

[root@PC1 test]# ls
a.txt
[root@PC1 test]# cat a.txt              ## 测试数据
aa bb cc
11 22 33
55 88 33
[root@PC1 test]# awk 'BEGIN{OFS = "_"} {print $1, $2, $3}' a.txt    ## 利用BEGIN指定输出分隔符
aa_bb_cc
11_22_33
55_88_33
[root@PC1 test]# awk '{OFS = "_"; print $1, $2, $3}' a.txt
aa_bb_cc
11_22_33
55_88_33
[root@PC1 test]# awk '{print $1, $2, $3}' OFS="_" a.txt
aa_bb_cc
11_22_33
55_88_33

 

 

004、指定行的输出分隔符

[root@PC1 test]# ls
a.txt
[root@PC1 test]# cat a.txt
aa bb cc
11 22 33
55 88 33
[root@PC1 test]# awk 'BEGIN{ORS="_"} {print $0}' a.txt     ## 指定行的输出分隔符为_.
aa bb cc_11 22 33_55 88 33_[root@PC1 test]#
[root@PC1 test]# cat a.txt
aa bb cc
11 22 33
55 88 33
[root@PC1 test]# awk '{print $0}' ORS="_" a.txt
aa bb cc_11 22 33_55 88 33_[root@PC1 test]#
[root@PC1 test]# cat a.txt
aa bb cc
11 22 33
55 88 33
[root@PC1 test]# awk '{ORS="_"; print $0}' a.txt
aa bb cc_11 22 33_55 88 33_[root@PC1 test]#

 

posted @ 2023-02-25 17:08  小鲨鱼2018  阅读(2194)  评论(0编辑  收藏  举报