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