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
我想在选择多个模式后用 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