簡體   English   中英

最后一列后的awk和換行符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM