我有一个文件,我想将“\ n”转换为“”并将“\ n \ n”转换为“\ n”。 例如:
I
had
a
toy
.
It
was
good
.
变为:
I had a toy .
It was good .
有没有人有这种操作的Unix单线程?
答案 0 :(得分:3)
fmt | sed '/^$/d'
fmt命令会将行换行为75个字符,因此请使用fmt -w [WIDTH]设置更长的行。
答案 1 :(得分:3)
如果你有傻瓜
# awk 'BEGIN{RS=""}{$1=$1}1' file
I had a toy .
It was good .
答案 2 :(得分:1)
又一个Awk解决方案:
$ cat data.txt
I
had
a
toy
.
It
was
good
.
$ awk '{printf "%s ", $0} /^$/{print ""}' data.txt
I had a toy .
It was good .
答案 3 :(得分:0)
如果你已经安装了Ruby,那么就可以实现这一功能了。
irb(main):014:0> puts f.gsub(/[a-zA-Z.](\n)/) {|s| s.chomp +" "}
I had a toy .
It was good .
答案 4 :(得分:0)
我认为bmb对他/她自己的答案的评论暗示了如果你用Google搜索建议你可能遇到的困难。
Google'删除空白行'。
也许fmt不会自己做,但有很多方法。
我喜欢grep
方法
grep -v "^$" filename > newfilename
虽然重命名文件有点麻烦。
编辑:'删除空白行Perl'找到的其中一个点击
perl -pi -e "s/^\n//" file.txt
答案 5 :(得分:0)
我能想到的第一件事是:
tr '\n' '#' | sed 's/##/\n/g' | sed 's/#//g'
其中#是文件中未使用的某个字符,这是它的缺点。你必须使用一些独特的角色;)