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