无法使用awk在每行的开头添加行号

时间:2014-12-02 08:22:31

标签: awk

我正在尝试使用此awk命令awk "{print NR, $0}" file1.csv,但它添加的是行号,后跟空格而不是逗号。

我尝试了其他具有相同结果的命令

awk "{print NR "," $0}" file1.csv

无论我在哪里使用单引号,都会出错。

我在Windows上使用Gawk。我错过了什么?

谢谢

5 个答案:

答案 0 :(得分:1)

谢谢大家的回答,但我发现one有效:在窗口我必须在双引号内逃脱:

awk "{print NR \",\" $0}" file1.csv

答案 1 :(得分:0)

试试这个:

awk '{print NR "," $0}' file1.csv

示例:

sdlcb@BlrLaite2-Generic:~$ cat ff
aa, aa, aa, aa
aa, aa, aa, aa
aa, aa, aa, aa
aa, aa, aa, aa
aa, aa, aa, aa
aa, aa, aa, aa
sdlcb@BlrLaite2-Generic:~$ awk '{print NR "," $0}' ff
1,aa, aa, aa, aa
2,aa, aa, aa, aa
3,aa, aa, aa, aa
4,aa, aa, aa, aa
5,aa, aa, aa, aa
6,aa, aa, aa, aa

答案 2 :(得分:0)

只需将awk的代码包含在单引号内,而不是双引号。

awk '{print NR "," $0}' file1.csv

OR

awk -v FS="," -v OFS="," "{print NR,$0}" file.csv

您之前的命令awk "{print NR, $0}" file1.csv显示空格而不是逗号,因为默认情况下,打印部分中的,将打印输出字段分隔符变量的值。默认值OFS的默认值为空格。所以它显示空格而不是逗号。

答案 3 :(得分:0)

使用"{print NR, $0}"中的逗号,使用printing打印后每个字词为field separator

awk "{print NR "," $0}"中使用双引号,您使用逗号拆分命令。

您必须为整个awk命令使用单引号:

awk '{print NR","$0}' file1.csv

或使用printf声明

awk '{printf("%s,$0\n", NR,$0)}' f

答案 4 :(得分:0)

,中的awk是默认的字段分隔符,一个空格 获得你想要的输出字段分隔符。

awk -vOFS="," '{print NR, $0}' file1.csv