$ cat ff
./res/values/strings.xml:1293: <string name="sub1LineNumber">Sub1 Number :</string>
./res/values/strings.xml:1302: <string name="xdivert_partial_set">XDivert has been set only for 1st subscription</string>
./res/values/strings.xml:1870: <string name="set_sub_1">Subscription 1: </string>
./res/values/strings.xml:1860: <string name="sub_1">SUB 1</string>
for f in $(cat ff |awk -F : '{print $1" +" $2}'); do echo $f; done
./res/values/strings.xml
+1293
./res/values/strings.xml
+1302
./res/values/strings.xml
+1870
./res/values/strings.xml
+1860
我想在一行中以 $1 +$2 的格式打印 $1 和 $2,但它打印在上面,有什么问题吗?
最佳答案
您不需要for
包装awk
命令。
如果你只是运行 awk
命令,你会得到你想要的输出:
$ cat ff | awk -F : '{print $1 " +" $2}'
./res/values/strings.xml +1293
./res/values/strings.xml +1302
./res/values/strings.xml +1870
./res/values/strings.xml +1860
发生的事情是 $(...)
包装器和 for
循环导致 awk
中每个空格分隔的单词输出成为循环的单独输入。删除循环,并解决问题。
关于linux - 为什么 awk 打印成两行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19780742/