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]#