Scr*_*bie -2 linux bash sed awk shell-script
我的文字是:
Hi
Bye
Nope
Sorry
Cya
Chill
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到:
[1] Hi
[2] Bye
[3] Nope
Run Code Online (Sandbox Code Playgroud)
等等等等?
该nl(“行数”)工具做到这一点:
$ cat file
Hi
Bye
Nope
Sorry
Cya
Chill
$ nl file
1 Hi
2 Bye
3 Nope
4 Sorry
5 Cya
6 Chill
Run Code Online (Sandbox Code Playgroud)
nl您可以使用多种选项。它也做页码等。
的一些实现cat也支持行编号:
$ cat -n file
1 Hi
2 Bye
3
4 Nope
5 Sorry
6
7 Cya
8 Chill
Run Code Online (Sandbox Code Playgroud)
与awk:
$ awk '{ print NR, $0 }' file
1 Hi
2 Bye
3
4 Nope
5 Sorry
6
7 Cya
8 Chill
Run Code Online (Sandbox Code Playgroud)
或者,如果您不想为空行编号:
$ awk '$0 { print ++nr, $0; next } { print }' file
1 Hi
2 Bye
3 Nope
4 Sorry
5 Cya
6 Chill
Run Code Online (Sandbox Code Playgroud)
使用awk,还可以轻松进行特殊格式设置:
$ awk -vOFS="\t" '$0 { print "[" ++nr "]", $0; next } { print }' file
[1] Hi
[2] Bye
[3] Nope
[4] Sorry
[5] Cya
[6] Chill
Run Code Online (Sandbox Code Playgroud)
或者...
$ awk -vOFS=":\t" '$0 { printf("[%03d]%s%s\n", ++nr, OFS, $0); next } { print }' file
[001]: Hi
[002]: Bye
[003]: Nope
[004]: Sorry
[005]: Cya
[006]: Chill
Run Code Online (Sandbox Code Playgroud)
从paste手册(在 OpenBSD 上):
$ sed '=' file | paste -s -d '\t\n' - -
1 Hi
2 Bye
3
4 Nope
5 Sorry
6
7 Cya
8 Chill
Run Code Online (Sandbox Code Playgroud)