在bash中处理文件夹中的文件

时间:2014-03-26 18:12:12

标签: bash awk

我试图避免编写一个代码,通过弄清楚脚本...

基本上,我在文件夹中有数千个文件...... 每个文件都具有以下格式

primary_id
secondary_id,score,date

示例是:

file1.txt
1
12,3,2003-12-29
13,2,2003-12-29

file2.txt
2
22,1,2004-01-20

我想要的是......处理这些并为每个文件创建以下输出:

output1.txt
12,1,3
13,1,2

output2.txt
22,2,1

等等

如何使用bash,awk unix脚本工具

执行此操作

2 个答案:

答案 0 :(得分:2)

另一个awk:

awk  'NR==1{id=$1;next}{print $1,id,$2}'  FS=',' OFS=',' infile

答案 1 :(得分:2)

$ awk '
    BEGIN { FS=OFS="," }
    FNR==1  { k=$0; close(fname); fname="output"++nr".txt"; next }
    { print $1,k,$2 > fname }
' file1.txt file2.txt

$ cat output1.txt
12,1,3
13,1,2

$ cat output2.txt
22,2,1

如果您可以拥有空输入文件,那么您可能需要一个不同的解决方案(可能需要使用ARGIND和/或BEGINFILE / ENDFILE),但您需要告诉我们您希望如何处理这些文件。