情景
曾经有一同事问我,在linux下如何输出一个文本文件的第二列,文本内容不限。我不假思索地说用awk啊。她追问只有这一种方式么?于是我仔细想了想,……
分析
既然内容不限,则可以自定义文件内容的格式,这样可以用的命令自然会多一些。
需求为输出文件第二列,则基本上有两种方式实现:
直接过滤第二列并输出;
将其他列删除,只剩下第二列;
因而,任何能直接输出特定列的命令,以及能够截取或删除其它列的命令都满足此需求。
示例文件
为了方便说明,列举几个示例文件:
cat test1.txt
1 zhangsan 15 hebei
2 lisi 17 jiangsu
3 wangwu 29 tianjin
4 zhaoliu 21 fujian
cat test2.txt
1:test001:15:hebei
2:test002:17:jiangsu
3:test003:29:tianjin
4:test004:21:fujian
方案
awk
awk自然是最容易想到的,它处理格式化的文本得心应手。
awk '{print $2}' test1.txt
zhangsan
lisi
wangwu
zhaoliu
使用-F指定列(字段)分隔符。
awk -F ":" '{print $2}' test2.txt