[英]awk and newline after final column
我有一個輸入文件,其示例是:
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
您可以在打印之前刪除CR
字符:
awk '{ sub("\r", "", $14); print $14, $4; }' catalog.txt >> bbb.txt
sub()
函數將一個字符串替換為另一字符串; 在這種情況下,我將第14列中的\\r
字符替換為空字符串。
您可以嘗試以下方法,以獲取字段(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
我在行尾\\\\\\ n的DOS文件中遇到此問題。 因此,最后一列帶有\\ r,因為awk / gawk中的默認RS為\\ n。
解決方案很簡單。 使RS \\ r \\ n即
RS="\r\n";
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.