我有一个(希望)快速简单的问题,这让我有点疯狂!我有一堆文件,我想从它们打印1美元。每个文件都有几行输出,比方说两个。因此,如果我从一个文件中打印$ 1,我可能会得到这样的结果:
1 0
但是,我要做的是从所有文件中打印出来:
awk '{printf $1}' files*
当我这样做时,输出基本上只是一个长行:1110000111100000 ......等。不是我想要的。我希望输出像这样:
1 0
0 1
1 1
这样每行代表每个文件的输出。
我试过了:
awk 'BEGIN { ORS=" " }; { print $1}'
和相当多的迭代,到目前为止没有成功。我知道这应该很简单,但答案已经提到了我,我将不胜感激。为了记录,这不是任何课程,只是我自己的工作。此外,我确实在这里和其他地方看过其他帖子,到目前为止还没有任何工作。先感谢您。
答案 0 :(得分:0)
awk '{printf "%s%s", (FNR>1 ? OFS : ors), $0; ors=ORS} END{print ""}' file*
解释:对于每一行,它打印一些东西(由三元表达式控制),然后是行的内容。这是除了第一个文件之外的每个文件的第一行的换行符(通过在读取第一行之后不设置ors来控制),以及每隔一行的空白char。完成所有文件后,它会打印一个终止换行符。
答案 1 :(得分:0)
在GNU awk(gawk)中尝试以下内容:
awk '{printf "%s ", $1} ENDFILE {print ""}' files*
第一个printf会打印以空格分隔的$ 1。
第二个打印件在每个文件后打印换行符。