有一个错误创建的文件。文件中有多个以空格分隔的字段,但一个文本字段包含一些不需要的换行符。这引起了一个大问题。
如何删除这些字符但不删除所需的行?
文件是:
'Number field' 'Text field' 'Number field'
1 Some text 999999
2 more
text 111111111
3 Even more text 8888888888
EOF
所以在"更多"。
之后有一个NL我已尝试过sed:
sed 's/.$//g' test.txt > test.out
和
sed 's/\n//g' test.txt > test.out
但这些都不起作用。新行不会被删除。
tr -d '\n'
做得太多了 - 我只需要删除前面有空格的换行符。
如何删除空格后面的换行符?
SunOS 5.10 Generic_144488-09 sun4u sparc SUNW,Sun-Fire-V440
答案 0 :(得分:2)
sed解决方案
sed '/ $/{N;s/\n//}'
说明:
/ $/
:每当行在空格中结束时,N
:追加换行符和下一行输入,s/\n//
:删除换行符。答案 1 :(得分:0)
如何删除空格后面的换行符?
如果您希望原始文件中的每个$' \n'
替换为空格($' '
),并且您知道某个字符(例如控制字符)未出现在该文件,然后可以使用sed和tr(按照您的要求)完成任务。例如,假设control-A是不在文件中的字符。为简单起见,我们还假设我们可以使用bash。然后,以下脚本应该完成这项工作:
#!/bin/bash
A=$'\01'
tr '\n' "$A" | sed "s/ $A/ /g" | tr "$A" '\n'
答案 2 :(得分:0)
使用Perl可能最简单:
perl -p0 -e 's/ \n/ /g'
-0
标志使Perl将整个文件读作一行。然后我们可以用通常的方式使用s
替换。当然,您也可以添加-i
选项来就地编辑文件。