awk 多行和打印结果

awk multiple row and printing results

我想在选择多个模式后用 awk 打印结果的某些特定部分。

我有的是(文件测试):

A    : 1
B    : 2

我希望有:

1 - B : 2

所以,只有第一行的结果,然后是整个第二行的结果。 破折号是我加的。

我有这个:

awk -F': ' ' ~ /A|B/ { printf "%s",  "-" }' filetest

结果:

1 -2 -

而且我不能得到完整的第二行,而不会只显示第一行的结果

awk -F': ' ' ~ /A|B/ { printf "%s",  "" }' filetest

结果:

1 -    A    2 -    B 

有什么方法可以在同一行打印,正是我需要用 awk 打印的 column/row 吗? 就我而言 R1C2 - R2C1: R2C2?

谢谢!

$ awk -F: 'NR%2 {printf "%s - ", ; next}1' filetest
1 - B : 2

这将达到您的预期:

awk -F: '/^A/{printf "%s -", }/^B/{print}' filetest

你可以试试这个

awk -F:  'NR%2==1{a=; } NR%2==0{print a " - " [=10=]}' file

输出

  1 - B : 2

我可能会选择 ,因为它清晰、简单,并且与您的数据值无关,只是为了展示另一种方法:

$ awk '{printf "%s", (NR%2 ?  " - " : [=10=] ORS)}' file
1 - B    : 2

在 gnu awk 上试过

awk -F':' 'NR==1{s=;next}{FS="";s=s" - "[=10=];print s}' filetest