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的优雅