为什么awk打印成两行?

Vic*_*r S 0 linux awk

$ 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
Run Code Online (Sandbox Code Playgroud)

我希望在一行中以$ 1 + $ 2的格式打印1美元和2美元,但它打印在上面,出了什么问题?

dan*_*uzz 7

您不需要命令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
Run Code Online (Sandbox Code Playgroud)

发生的事情是$(...)包装器和for循环导致awk输出中每个以空格分隔的单词成为循环的单独输入.删除循环,并删除问题.