linux - 为什么 awk 打印成两行?

标签 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

我想在一行中以 $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/

相关文章:

c - 用表达式参数的 printf 替换算术表达式

linux - 仅当该行不存在时,如何向不同子目录下的多个文本文件添加一行?

linux - jenkins.plugins.publish_over.BapPublisherException : Failed to connect and initialize SSH connection Message [Auth fail]

linux - 为什么在 Linux 上以 64 位模式构建的可执行文件显示机器类型为 AMD x86 64?

linux - 终端 - 删除所有不包含 .mp3 文件的文件夹

linux - grep 键值对和格式的值

regex - 如何打印与正则表达式匹配的 Linux 文件名部分

regex - 如何使用正则表达式和 Awk 提取括号之间的子字符串?

shell - 差异/合并两个文件

Linux - 使用文件提供命令输入并在命令运行时删除该文件