我有两个文本文件。第一个“file1.txt”有内容:
Apple
Orange
Banana
Run Code Online (Sandbox Code Playgroud)
而第二个文件“file2.txt”有内容:
monday
tuesday
wednesday
Run Code Online (Sandbox Code Playgroud)
我想将它们组合成一个文件,其输出是:
Apple File1.txt
Orange File1.txt
Banana File1.txt
monday File2.txt
tuesday File2.txt
wednesday File2.txt
Run Code Online (Sandbox Code Playgroud)
cas*_*cas 14
这很简单awk:
$ awk '{print $0,FILENAME}' File*.txt
Apple File1.txt
Orange File1.txt
Banana File1.txt
monday File2.txt
tuesday File2.txt
wednesday File2.txt
Run Code Online (Sandbox Code Playgroud)
如果您希望在输入行和文件名之间使用制表符而不是空格,请添加-v OFS='\t'到命令行以设置输出字段分隔符 (OFS):
awk -v OFS='\t' '{print $0,FILENAME}' File*.txt
Run Code Online (Sandbox Code Playgroud)
或使用:
awk '{print $0 "\t" FILENAME}' File*.txt
Run Code Online (Sandbox Code Playgroud)
那是假设文件名不包含=字符。如果您不能保证文件名不包含=字符,您可以将其更改为:
awk '{print $0 "\t" substr(FILENAME, 3)}' ./File*.txt
Run Code Online (Sandbox Code Playgroud)
尽管awk至少在 GNU中,如果文件的名称包含未形成有效字符的字节(您可以通过将区域设置固定为C(with LC_ALL=C awk...)来解决该问题,尽管这也会产生潜在改变的副作用),您会收到警告其他错误消息的语言(如果有)。