我有以下输入文件,希望每隔两个字段打印一次:
A=1=B=2=C=3
要获得以下输出:
1 2 3
我努力了:
awk 'BEGIN {FS="="; OFS=" "} {for (i=2; i<=NF; i+=2); print ($i) }' input_file
显然不起作用。我认为我的for循环部分正确,但是我的打印部分出了点问题。
谢谢。
$ awk -v RS== -v ORS=" " '0==NR%2' input_file
1 2 3
-v RS==
将输入记录分隔符设置为=
。
-v ORS=" "
将输出记录分隔符设置为空格。
0==NR%2
打印每隔一行。
NR
是行号。NR%2
是模2的行号。因此,0==NR%2
每隔一行就满足该条件。当条件为真时,将执行操作。由于未指定任何操作,因此将执行默认操作,即打印记录。
原始代码中的关键问题是分号放置错误。考虑:
for (i=2; i<=NF; i+=2); print ($i)
在这种情况下,print
命令时才执行后的for
循环退出。
尝试:
$ awk 'BEGIN {FS="="; OFS=" "} {for (i=2; i<=NF; i+=2)print $i }' input_file
1
2
3
或者,如果要在一行上输出:
$ awk 'BEGIN {FS="="} {for (i=2; i<=NF; i+=2)printf "%s ", $i; print "" }' input_file
1 2 3
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句