我有一个文件.txt是这样写的:
0
0.421915 0.420615 192000
0.420397 0.420802 192000
1
0.423915 0.423681 768000
0.421658 0.421474 768000
我想只用一列和下一列。可以使用awk吗,我该怎么做?
谢谢!
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,如果遇到文件末尾,则返回 0print $0 ORS nl
- 打印只有一列和下一列的行(根据需要(
我会用 grep 来做:
grep -E -A 1 "^[0-9]+$" yourfile.txt
你应该能够做到这一点:
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
$ awk 'NF==1{c=2} c&&c--' file
0
0.421915 0.420615 192000
1
0.423915 0.423681 768000
有关该和更多 awk 范围习语的解释,请参阅 https://stackoverflow.com/a/17914105/1745001。