Bash 如何连续地对文件的奇数行进行编号?

Bash 如何连续地对文件的奇数行进行编号?,bash,shell,awk,sed,Bash,Shell,Awk,Sed,我想做的就是简单地添加一列,列中包含一个巨大文件的编号: xxx xxxxx xxxx xxx xxxxx xxxx xxx xxxxx xxxx xxx xxxxx xxxx xxx xxxxx xxxx 要获取下一个输出,请执行以下操作: xxx 1 xxxx xxxxx xxx xxxx xxxx xxx 2 xxxx xxxxx xxx xxxx xxxx xxx 3 xxxx xxxxx 我用awk'{print NR%2==1等…}尝试了一些东西,但不起作用 有什么建议吗 非常感

我想做的就是简单地添加一列,列中包含一个巨大文件的编号:

xxx xxxxx xxxx
xxx xxxxx xxxx
xxx xxxxx xxxx
xxx xxxxx xxxx
xxx xxxxx xxxx
要获取下一个输出,请执行以下操作:

xxx 1 xxxx xxxxx
xxx xxxx xxxx
xxx 2 xxxx xxxxx
xxx xxxx xxxx
xxx 3 xxxx xxxxx
我用
awk'{print NR%2==1等…}
尝试了一些东西,但不起作用

有什么建议吗


非常感谢您的光临

您走上了正确的道路

awk 'NR%2 { $1 = $1" "++i}; 1;' file.txt
NR%2
对奇数行求值为真。结果赋值将第一个字段替换为第一个字段中的值加上一个(从0开始)递增然后串联的数字。
1始终计算为true,并将默认操作(打印)应用于行。较长但清晰的等价物是
NR%2{$1=$1”“++i};{print}

perl -lane 'if ($. % 2 == 1){$n++; print "$F[0] $n @F[1..$#F]"} else{print}' file.txt
生成输出:

xxx 1 xxxxx xxxx
xxx xxxxx xxxx
xxx 2 xxxxx xxxx
xxx xxxxx xxxx
xxx 3 xxxxx xxxx
说明:

  • -n
    循环输入文件的每一行,将该行放入$变量,不要自动打印每一行

  • -l
    在处理之前删除换行符,然后将其添加回

  • -a
    自动拆分模式–将输入行拆分为@F数组

  • -e
    执行perl代码

$。
是行号

@F
是每行中的单词数组,索引从0开始
$#F
@F


@F[1..$#F]
是元素1到最后一个元素的数组切片

非常感谢,它工作正常,老板:)非常感谢您展示了awk的优雅