我正在编写一个bash脚本,该脚本调用vim来修改另一个文件,然后使用'\ n'连接文件中的所有行。 我在脚本中尝试过的代码:
vi filefff (then I modify the text in filefff)
cat filefff
new=$(cat filefff | sed 'N;N;s/\n/\\n/g')
echo $new
问题出在这里
例如,如果文件中有两行:第一行aa,第二行 bb,
aa
bb
然后将文件更改为:
aa
bb
cc
dd
ee
echo $new
的结果为aa“ \ n” bb cc“ \ n” dd ee“ \ n”。该命令仅加入了某些行。
然后我再添加一些行:
aa
bb
cc
dd
ee
ff
gg
hh
结果是aa“ \ n” bb cc“ \ n” dd ee“ \ n” ff,“ hh”消失了。
所以我想知道为什么以及如何用'\ n'连接所有行,无论我要在文件中追加多少行。
答案 0 :(得分:0)
作为注释建议的'sed'或'tr'解决方案的增强,它可以产生非常长的行,请考虑以下选项,它可以产生更人性化的输出,并允许最大行长上限(200 in下面的示例)
# Use fold to limit line length
cat filefff | tr '\n' ' ' | fold -w200
# Use fmt to combine lines
cat filefff | fmt -w200
# Use xargs to format
cat filefff | xargs -s200
请注意,如果提供空行,则'fmt'将假定需要换行。