如何通过 AWK/... 增加行开始替换的行计数器?

Léo*_* 준영 9 awk text-processing nl

我首先想到了 SED ( sed "s/^/COUNTER \&/" /tmp/1.tex) 但它是为单行设计的,我现在无法通过 sed 增加计数器本身,awk因为我gawk在集成方法方面拥有丰富的经验。数据

What & South Dragon & North Dragon    & 5 \\ \hline
What & South Dragon & North Dragon    & 5 \\ \hline
What & South Dragon & North Dragon    & 5 \\ \hline
Run Code Online (Sandbox Code Playgroud)

预期输出

1 & What & South Dragon & North Dragon    & 5 \\ \hline
2 & What & South Dragon & North Dragon    & 5 \\ \hline
3 & What & South Dragon & North Dragon    & 5 \\ \hline
Run Code Online (Sandbox Code Playgroud)

操作系统:Debian 8.5

Dop*_*oti 11

nl 是一个对文件行进行编号的实用程序。用法:

nl /path/to/file
Run Code Online (Sandbox Code Playgroud)

在您的具体情况下:

$ nl  -s ' & ' input.txt                                                                                                 
     1 & What & South Dragon & North Dragon    & 5 \\ \hline
     2 & What & South Dragon & North Dragon    & 5 \\ \hline
     3 & What & South Dragon & North Dragon    & 5 \\ \hline
Run Code Online (Sandbox Code Playgroud)

  • `nl -s ' &' /path/to/file`。`-s` 指定将数字与输入文件正文分开的内容。 (3认同)

ste*_*eve 10

这实现了你所追求的。(也是awk '$0=NR" & "$0' filename,但这有点神秘)

awk '{print NR,"&",$0}' filename
1 & What & South Dragon & North Dragon    & 5 \\ \hline
2 & What & South Dragon & North Dragon    & 5 \\ \hline
3 & What & South Dragon & North Dragon    & 5 \\ \hline
Run Code Online (Sandbox Code Playgroud)

或者,如果sed更可取,这会给出相同的结果。

sed = filename | sed 'N;s/\n/ \& /'
Run Code Online (Sandbox Code Playgroud)

perl 方法。

perl -pe '$_="$. & $_"' filename
perl -pe 's/^/$. & /' filename
Run Code Online (Sandbox Code Playgroud)