向文本文件添加列,其值为行号?

向文本文件添加列,其值为行号?

如何向文本文件添加一列,其中的值为行号?

归档时间:

Foo Ba Lk Q
Lorem ipsum doler

之后归档

1 Foo Ba Lk Q
2 Lorem ipsum doler

ETC

答案1

一些不同的方法:

  1. $ cat -n file
        1   Foo Ba Lk Q
        2   Lorem ipsum doler
    
  2. Perl

    perl -pe 's/^/$. /' file
    

    意思-pe是“将 给出的脚本应用到输入行后打印出每一行-e”。然后,我们用^行号 ( $.) 和空格替换 (行的开头)。

    或者,因为这是 Perl,并且蒂姆托

    perl -ne 'print "$. $_"' file 
    perl -pe '$_ = "$. $_"' file 
    

    在所有这些例子中,如果您想修改原始文件,请使用-i

    perl -i -pe 's/^/$. /' file
    perl -i -ne 'print "$. $_"' file 
    perl -i -pe '$_ = "$. $_"' file 
    
  3. awk

    $ awk '{print NR,$0}' file
    1 Foo Ba Lk Q
    2 Lorem ipsum doler
    

    特殊变量NR是当前行号和$0当前行。要在原始文件中进行更改(假设您拥有足够新的 GNU awk 版本),请执行以下操作:

    gawk -iinplace '{print NR,$0}' file
    
  4. sed

    $ sed = file | sed 'N;s/\n/\t/'
    1   Foo Ba Lk Q
    2   Lorem ipsum doler
    

    意思=是“在每一行之前打印行号”。但是,这会单独打印一行上的行号,并在其下打印输入行。第二个sed命令将它们重新放回到同一行上。

答案2

只是为了好玩

python3 -c "[print(i+1, l.strip())for i, l in enumerate(open('f').readlines())]"

输出:

1 Foo Ba Lk Q
2 Lorem ipsum doler

f您的文件的路径在哪里,用引号括起来。

解释

open('f').readlines()

将按行读取文件,然后

enumerate(open('f').readlines())

随后会为每一行添加一个数字,并且

print(i+1, l.strip())

将打印数字(+1,因为第一个索引是 0)+相应的行

相关内容