我用这种方式写的file.txt(没有开头的点,只是数字):
0
0.421915 0.420615 192000
0.420397 0.420802 192000
1
0.423915 0.423681 768000
0.421658 0.421474 768000
我想只用一列和下一列。 是否可以使用awk,我该怎么做?
谢谢!
答案 0 :(得分:4)
短 awk 方法:
awk 'NF==1 && (getline nl)>0{print $0 ORS nl}' file
输出:
0
0.421915 0.420615 192000
1
0.423915 0.423681 768000
NF==1
- 仅考虑包含一列的行
getline nl
- 获取下一行并将其分配给变量nl
(下一行)
(getline nl)>0
- getline 命令返回 1 ,如果找到记录且 0 如果遇到文件末尾
print $0 ORS nl
- 打印仅包含一列的行 (根据需要)
答案 1 :(得分:2)
我会用grep:
来做 grep -E -A 1 "^[0-9]+$" yourfile.txt
答案 2 :(得分:0)
您应该能够:
awk 'NF==1{p=1;print$0;}NF!=1{if(p==1){print$0;p=0}}' file.txt
<强>输出强>:
0
0.421915 0.420615 192000
1
0.423915 0.423681 768000
答案 3 :(得分:0)
$ awk 'NF==1{c=2} c&&c--' file
0
0.421915 0.420615 192000
1
0.423915 0.423681 768000
请参阅https://stackoverflow.com/a/17914105/1745001以获取对此的解释以及更多awk范围习语。