我一直在尝试将多个文本文件合并为文件名。
我当前的文件内容是:
1111,2222,3333,4444
我追求的是:
File1,1111,2222,3333,4444
File1,1111,2222,3333,4445
File1,1111,2222,3333,4446
File1,1111,2222,3333,4447
File2,1111,2222,3333,114444
File2,1111,2222,3333,114445
File2,1111,2222,3333,114446
我发现了多个示例,说明如何将它们全部合并,但没有任何方法可以合并它们,包括文件名。
答案 0 :(得分:3)
能否请您尝试以下。考虑到您的Input_file扩展名是.csv
。
awk 'BEGIN{OFS=","} {print FILENAME,$0}' *.csv > output_file
在看到OP的注释后,如果文件扩展名是.txt
,请尝试:
awk 'BEGIN{OFS=","} {print FILENAME,$0}' *.txt > output_file
答案 1 :(得分:1)
假设您的所有文件都具有# ID col1
#1 1 101
#2 1 102
#3 3 104
#4 4 101
扩展名,并且仅包含一行(如示例中所示),则可以使用以下代码:
.txt
其中for f in *.txt; do echo "$f,$(cat "$f")"; done > output.log
是输出文件。
答案 2 :(得分:0)
好吧,它起作用:
printf "%s\n" *.txt |
xargs -n1 -d $'\n' bash -c 'xargs -n1 -d $'\''\n'\'' printf "%s,%s\n" "$1" <"$1"' --
xargs
执行sh
xargs
printf "%s,%s\n" <filename>
在repl中进行了测试。
答案 3 :(得分:0)
已使用grep "" *.txt -I > $filename
解决。