我正在尝试以将第 10 行合并到第 9 行的方式修改文件。例如我的文件如下所示:
a
b
c
d
e
f
g
h
this is line nine
and this is line ten
i
j
我想要一个像这样的新文件:
a
b
c
d
e
f
g
h
this is line nine and this is line ten
i
j
如何合并文件的两个特定行?另外,由于文件有大量行,是否可以避免读取整个文件?
我尝试使用
echo $(cat filename)
但它似乎不起作用,而且它还会修改整个文件,而不仅仅是第 9 行和第 10 行。
您正在寻找这样的东西:
sed '9{N;s/\n/ /}' file
sed
是一个用于文本操作的流编辑器,它对输入文件的每一行执行一系列命令。它有两个内存块的知识。 pattern space 就是其中之一,默认情况下打印在命令序列的末尾。这是它的工作原理:
9{...}
: 这意味着大括号内的两个命令将仅应用于第 9 行。N
: 此命令将下一行输入追加到当前模式空间。该行前面带有换行符。s/\n/ /
: 此命令将模式空间中的第一个换行符 \n
替换为空格。