Add numbers to the beginning of every line in a file

后端 未结 7 1670
暗喜
暗喜 2020-12-01 02:44

How can I add numbers to the beginning of every line in a file?

E.g.:

This is
the text
from the file.

Becomes:

000000001 This is
000         


        
相关标签:
7条回答
  • 2020-12-01 03:02

    Easiest, simplest option is

    awk '{print NR,$0}' file
    

    See comment above on why nl isn't really the best option.

    0 讨论(0)
  • 2020-12-01 03:04

    You're looking for the nl(1) command:

    $ nl -nrz -w9  /etc/passwd
    000000001   root:x:0:0:root:/root:/bin/bash
    000000002   daemon:x:1:1:daemon:/usr/sbin:/bin/sh
    000000003   bin:x:2:2:bin:/bin:/bin/sh
    ...
    

    -w9 asks for numbers nine digits long; -nrz asks for the numbers to be formatted right-justified with zero padding.

    0 讨论(0)
  • 2020-12-01 03:13

    AWK's printf, NR and $0 make it easy to have precise and flexible control over the formatting:

    ~ $ awk '{printf("%010d %s\n", NR, $0)}' example.txt
    0000000001 This is
    0000000002 the text
    0000000003 from the file.
    
    0 讨论(0)
  • 2020-12-01 03:14

    Don't use cat or any other tool which is not designed to do that. Use the program:

    nl - number lines of files

    Example:

    nl --number-format=rz --number-width=9 foobar
    

    Because nl is made for it ;-)

    0 讨论(0)
  • 2020-12-01 03:22

    Here's a bash script that will do this also:

    #!/bin/bash
    counter=0
    filename=$1
    while read -r line
    do
      printf "%010d %s" $counter $line
      let counter=$counter+1
    done < "$filename"
    
    0 讨论(0)
  • 2020-12-01 03:25

    cat -n thefile will do the job, albeit with the numbers in a slightly different format.

    0 讨论(0)
提交回复
热议问题