簡體   English   中英

awk:輸出文件的文件名中包含^ M個字符

[英]awk: output files contain ^M character in filename

我有一個很長的文件,看起來像這樣:

0a
190  0.121212
191  0.232323
...
0b
190  0.1212
191  0.4545
...
16c
190  0.34654
191  0.567565
...

我使用awk使用以下命令將文件拆分為許多較小的文件:

awk '/[0-9][a-c]/{close(x); x=$0;}{print > x;}' spectrum.tsv

這可行,但是輸出文件的名稱似乎都在文件名的末尾包含換行符: 在此處輸入圖片說明

我試圖用“ sub”刪除換行符,如下所示:

awk '/[0-9][a-c]/{close(x); x=$0;}{sub(/^M/,"",x)}{print > x;}' spectrum.tsv 

但這導致相同的結果。

所以我的問題是,如何避免輸出文件名中的換行符? 我正在OSX 10.10 btw上工作。 輸入文件來自Windows計算機。

在讓awk處理文件之前,在文件上運行dos2unix 它將刪除DOS樣式的行尾,這可能是導致您頭痛的原因。

您只需在awk中設置適當的記錄分隔符即可處理輸入文件中的\\r

awk -v RS='\r?\n' '/[0-9][a-c]/{close(x); x=$0;}{print > x;}' spectrum.tsv

這里RS='\\r?\\n'RS設置為可選的\\r^M ),后跟\\n

在vi編輯器中打開並進入命令模式,然后:輸入":%s/[CTRL+V][CTRL+M]//g"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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