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 000000002 the text 000000003 from the file.
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 000000002 the text 000000003 from the file.
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.
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
$ nl -n rz -w 9 foobar # short-hand
Because nl is made for it ;-)
ls | nl #nl for dummies
–
Formalism -ba
switch. –
Fibrovascular 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.
public static final int CONSTANTX;
and I wanted something like public static final int CONSTANTX;=X
where X
is the number of the line in the source file. I rearranged your answer as awk '{printf("%s = %d;\n", $0, NR-4)}' Constants.java
and it worked like a charm! –
Subside 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.
awk(1)
certainly excels at tasks like this. –
Ethnomusicology awk
, using some for loop, which would take another 30 minutes for the script to run through the file; or I could ask here. I've never heard of nl
before. Am I posting the wrong kind of questions? –
Herschel cat -n thefile
will do the job, albeit with the numbers in a slightly different format.
Easiest, simplest option is
awk '{print NR,$0}' file
See comment above on why nl isn't really the best option.
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"
© 2022 - 2024 — McMap. All rights reserved.
public static final int CONSTANTX;
and I wanted something likepublic static final int CONSTANTX;=X
whereX
is the number of the line in the source file. I rearranged your answer asawk '{printf("%s = %d;\n", $0, NR-4)}' Constants.java
and it worked like a charm! – Subside