我有一个很长的文件,看起来像这样:
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顺便说一句。输入文件来自Windows机器。
答案 0 :(得分:3)
在让awk处理它们之前,先对文件运行dos2unix
!
它将删除DOS样式的行尾,这可能是导致你头痛的原因。
答案 1 :(得分:1)
你可以在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
答案 2 :(得分:0)
在vi编辑器中打开并进入命令模式,然后:
输入":%s/[CTRL+V][CTRL+M]//g"