在 Linux 中,假设想要在第 5 行之前添加以下行(因此第 5 行变为第 6 行)和想要通过sed
“工具”对输出中的所有行进行编号=
sed -n '5\Insert this line before line nuber 29' FILE
问题:=
在这个结构中,在哪里对整个输出的行进行编号?
我知道nl
等等cat --number
,但由于sed
它本身为此提供了一个内置工具,因此如果只使用一个工具箱就很好了。
更新:结果应该是这样的,以某种方式:每行都有一个数字,上面的行被挤压在第五行的位置,等等。
1 A line
2 Another line
3 as abovr
4 again
5 Insert this line before line nuber 29
6 This originally was line number 5
7 nearing the end
8 last line
答案1
使用=
将打印行号,并在新行上显示该行:
~$ sed '=' myfile
1
a
2
b
3
c
4
d
5
e
6
f
7
g
8
h
如果您使用两次 sed 调用,则可以在同一行上打印:
~$ sed '=' myfile | sed '{N;s/\n/ /}'
1 a
2 b
3 c
4 d
5 e
6 f
7 g
8 h
您还可以使用以下命令再次插入该行i \
:
$ sed '5 i\
before 5
' myfile | sed '=' | sed '{N;s/\n/ /}'
1 a
2 b
3 c
4 d
5 before 5
6 e
7 f
8 g
9 h