我的文件夹中有一些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}}'
答案 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