不为多个文件打印换行符的awk

不为多个文件打印换行符的awk,awk,scripting,newline,Awk,Scripting,Newline,我有一个(希望是)快速简单的问题,这让我有点疯狂!我有一堆文件,我想从中打印1美元。每个文件都有几行输出,比如说两行。因此,如果我从一个文件打印$1,可能会得到如下结果: 1 0 0 1 1 1 10 但是,我要做的是打印所有文件,如下所示: awk '{printf $1}' files* 当我这样做时,输出基本上只是一条长线:111000011100000…等等。不是我想要的。我希望输出如下: 1 0 0 1 1 1 因此,每行表示每个文件的输出 我试过: awk 'BEGIN {

我有一个(希望是)快速简单的问题,这让我有点疯狂!我有一堆文件,我想从中打印1美元。每个文件都有几行输出,比如说两行。因此,如果我从一个文件打印$1,可能会得到如下结果:

1 0 
0 1
1 1
10

但是,我要做的是打印所有文件,如下所示:

awk '{printf $1}' files*
当我这样做时,输出基本上只是一条长线:111000011100000…等等。不是我想要的。我希望输出如下:

1 0 
0 1
1 1
因此,每行表示每个文件的输出

我试过:

awk 'BEGIN { ORS=" " }; { print $1}'
还有相当多的迭代,到目前为止没有成功。我知道这应该很简单,但答案暗示了我,我们将不胜感激。为了记录在案,这不是任何课程,只是我自己的工作。此外,我在这里和其他地方查看了其他帖子,到目前为止没有任何效果。先谢谢你

awk '{printf "%s%s", (FNR>1 ? OFS : ors), $0; ors=ORS} END{print ""}' file*
解释:每行打印内容(由三元表达式控制),后跟行内容。除了第一个文件之外,每个文件的第一行都有一个换行符(在读取第一行之前不设置ors来控制),其他每行都有一个空白字符。处理完所有文件后,它将打印一个终止换行符

解释:每行打印内容(由三元表达式控制),后跟行内容。除了第一个文件之外,每个文件的第一行都有一个换行符(在读取第一行之前不设置ors来控制),其他每行都有一个空白字符。处理完所有文件后,它将打印一个终止换行符。

在GNU awk(gawk)中,请尝试以下操作:

awk '{printf "%s ", $1} ENDFILE {print ""}' files*
第一个printf打印的是由空格分隔的$1

第二次打印在每个文件后打印一个换行符。

在GNU awk(gawk)中,请尝试以下操作:

awk '{printf "%s ", $1} ENDFILE {print ""}' files*
第一个printf打印的是由空格分隔的$1


第二次打印会在每个文件后打印一个换行符。

谢谢你,Ed,这似乎有效!只是为了再次检查,对于我想要的任何列,我只需将$0更改为该列,对吗?另外,你能解释一下脚本是如何工作的吗?再次感谢!一旦你有足够的时间收集和思考答案,看看下一步该怎么做。谢谢你,Ed,这似乎起作用了!只是为了再次检查,对于我想要的任何列,我只需将$0更改为该列,对吗?另外,你能解释一下脚本是如何工作的吗?再次感谢!一旦你有足够的时间收集和思考答案,看看下一步该做什么。这将在每个输出行的末尾打印一个额外的空白字符,在每个输出行的末尾将打印一个额外的空白字符。