我有一个输入文件,其样本是:
8101010447 25.09 40n50.76 15e06.74 4.96 999 ----- 0.2388 314 6.90 99.00 60 6 81EV00001
8101010929 23.85 42n47.96 12e47.90 8.90 3.0 MCSTI 0.0917 123 0.60 2.80 47 16 81EV00002
8101011100 14.41 40n52.23 15e20.57 7.34 999 ----- 0.7021 123 0.40 1.30 67 11 81EV00003
我需要获得最后一列和第四列。我正在使用awk正确获取列,但最后一列在末尾有一个换行符,因此列在不同的行上输出。
我的代码如下:
awk -F' ' '{print $14, $4}' catalog.txt >> bbb.txt
关于我如何做到这一点的任何想法?
最终输出应如下所示:
81EV00001 15e06.74
81EV00002 12e47.99
81EV00003 15e20.57
答案 0 :(得分:3)
您可以在打印前删除CR
个字符:
awk '{ sub("\r", "", $14); print $14, $4; }' catalog.txt >> bbb.txt
sub()
函数将一个字符串替换为另一个字符串;在这种情况下,我将第14列中的\r
字符替换为空字符串。
答案 1 :(得分:0)
您可以尝试这些方法,以获取字段(awk)并删除不需要的符号(tr):
删除CR:
awk -F' ' '{print $14, $4}' catalog.txt | tr -d '\r' > bbb.txt
删除LF:
awk -F' ' '{print $14, $4}' catalog.txt | tr -d '\n' > bbb.txt
删除CR和LF:
awk -F' ' '{print $14, $4}' catalog.txt | tr -d "\r\n" > bbb.txt
答案 2 :(得分:0)
我在一行\ r \ n位于末尾的DOS文件中遇到了这个问题。因此,最后一列带有\ r,因为awk / gawk中的默认RS为\ n。
解决方案很简单。将RS设置为\ r \ n
RS="\r\n";