如何阅读EOF并使用awk逐行解析

时间:2014-05-22 17:29:25

标签: awk

我的文件夹中有一些txt文件,其中包含大量数据。现在我必须通过一次读取每个文件中的一行来创建文件。新文件应如下所示:

foldername-file1.line1
foldername-file2.line1
fodlername-file3.line1
...then repeat the cycle
fodlername-file1.line2
fodlername-file2.lin2
fodlernam-file3.line2

fodlername-file1.line3
fodlername-file2.line3
fodlername-file3.line3

在文件结束之前,我必须连接文件。

我尝试使用sed,但由于我拥有大量数据,因此效果不佳。

counter=0
line=$(awk 'NR==n' n=$counter $filename)
echo $line >> $2

我在循环中递增计数器。我不知道如何检查文件的结尾。

使用粘贴命令我无法在每个字符串后附加文件夹名称,并且当文件具有不同数量的输入行时会追加额外的行

我自己刚刚解决了这个问题,只想分享解决方案。 我使用了一个脚本,首先在所有行中附加必需的字符串,然后在命令下面运行以读取所有字符串 粘贴-d'\ n'文件* | awk'{if(length($ 0)> 0){print $ 0}}'

1 个答案:

答案 0 :(得分:1)

您可以使用paste命令并将分隔符设置为换行符。

paste -d'\n' file*

以下是它的工作原理:

假设您有以下文件:

$ head f*
==> f1 <==
1
2
3
4
5

==> f2 <==
11
12
13
14
15

==> f3 <==
21
22
23
24
25

$ paste -d'\n' f*
1
11
21
2
12
22
3
13
23
4
14
24
5
15
25