在选择了多种模式之后,我想用awk打印结果的某些特定部分。
我拥有的是(文件测试):
A : 1
B : 2
我希望有:
1 - B : 2
因此,只有第一行的结果,然后是整个第二行。 破折号是我加的。
我有这个:
awk -F': ' '$1 ~ /A|B/ { printf "%s", $2 "-" }' filetest
结果:
1 -2 -
我无法获得完整的第二行,而不能仅显示第一行的结果
awk -F': ' '$1 ~ /A|B/ { printf "%s", $2 "$1" }' filetest
结果:
1 - A 2 - B
有什么方法可以在同一行中打印,正是我用awk所需的列/行吗?
就我而言,R1C2 - R2C1: R2C2
?
谢谢!
答案 0 :(得分:1)
$ awk -F: 'NR%2 {printf "%s - ", $2; next}1' filetest
1 - B : 2
答案 1 :(得分:1)
这将满足您的期望:
awk -F: '/^A/{printf "%s -", $2}/^B/{print}' filetest
答案 2 :(得分:0)
您可以尝试
awk -F: 'NR%2==1{a=$2; } NR%2==0{print a " - " $0}' file
输出
1 - B : 2
答案 3 :(得分:0)
我可能会选择@jas's answer,因为它很清楚,简单,并且与您的数据值无关,只是为了显示另一种方法:
$ awk '{printf "%s", (NR%2 ? $3 " - " : $0 ORS)}' file
1 - B : 2
答案 4 :(得分:0)
在gnu awk上尝试
awk -F':' 'NR==1{s=$2;next}{FS="";s=s" - "$0;print s}' filetest