awk操作多个文件

awk操作多个文件,awk,output,line,filenames,Awk,Output,Line,Filenames,我有以下文件file1和file2(作为示例) 我需要以下输出: 文件名和服务上的每个块循环:在1行中,如下图所示,用管道“|”分隔 你能帮我找到一个实现这一目标的方法吗 到目前为止,我可以把它放在一行,但我有一个问题,以获得在服务上循环的每个块前面的文件名: 我的命令如下: cat * | awk -F ":" '/^SERVICE:/ {print ""} {printf"|" substr($0, index($0,$1))}' 非常感谢您的帮助。。可能是一个三元操作,用于检查文件名是

我有以下文件file1和file2(作为示例)

我需要以下输出:

文件名和服务上的每个块循环:在1行中,如下图所示,用管道“|”分隔

你能帮我找到一个实现这一目标的方法吗

到目前为止,我可以把它放在一行,但我有一个问题,以获得在服务上循环的每个块前面的文件名:

我的命令如下:

cat * | awk -F ":" '/^SERVICE:/ {print ""} {printf"|" substr($0, index($0,$1))}'

非常感谢您的帮助。。可能是一个三元操作,用于检查文件名是否相同,如果不相同,则插入新行。。只是说<代码>:P是的,我只是不能100%相信所显示的预期输出实际上是所需的,因为2之间的空行将是无用的。我们来看看OP是怎么说的…
NR!=1&&FNR==1{print”“}
对于换行符,我会这样做。无论如何,这肯定是正确的方法,所以有一点。尽管如此,我还是想提出一个疯狂的GNU-sed解决方案PI总是喜欢看到疯狂的GNU-sed解决方案,唯一的危险是OP可能实际使用它!:-)。非常感谢Ed,这是预期的工作,并感谢其他人提供了++。。可能是一个三元操作,用于检查文件名是否相同,如果不相同,则插入新行。。只是说<代码>:P是的,我只是不能100%相信所显示的预期输出实际上是所需的,因为2之间的空行将是无用的。我们来看看OP是怎么说的…
NR!=1&&FNR==1{print”“}
对于换行符,我会这样做。无论如何,这肯定是正确的方法,所以有一点。尽管如此,我还是想提出一个疯狂的GNU-sed解决方案PI总是喜欢看到疯狂的GNU-sed解决方案,唯一的危险是OP可能实际使用它!:-)。非常感谢Ed,这是预期的工作,并感谢其他人的贡献
$ awk -v RS= -F'\n' -v OFS=' | ' '{$1 = FILENAME OFS $1}1' file1.txt file2.txt
file1.txt | SERVICE: 1 | TASK: 1 | RESULT: 1 | ADDITIONAL: 1
file1.txt | SERVICE: 2 | TASK: 2 | RESULT: 2 | ADDITIONAL: 2
file1.txt | SERVICE: 3 | TASK: 3 | RESULT: 3 | ADDITIONAL: 3
file2.txt | SERVICE: 1 | TASK: 1 | RESULT: 1 | ADDITIONAL: 1
file2.txt | SERVICE: 2 | TASK: 2 | RESULT: 2 | ADDITIONAL: 2
file2.txt | SERVICE: 3 | TASK: 3 | RESULT: 3 | ADDITIONAL: 3
file1.txt | SERVICE: 1 | TASK: 1 | RESULT: 1 | ADDITIONAL: 1
file1.txt | SERVICE: 2 | TASK: 2 | RESULT: 2 | ADDITIONAL: 2
file1.txt | SERVICE: 3 | TASK: 3 | RESULT: 3 | ADDITIONAL: 3

file2.txt | SERVICE: 1 | TASK: 1 | RESULT: 1 | ADDITIONAL: 1
file2.txt | SERVICE: 2 | TASK: 2 | RESULT: 2 | ADDITIONAL: 2
file2.txt | SERVICE: 3 | TASK: 3 | RESULT: 3 | ADDITIONAL: 3
cat * | awk -F ":" '/^SERVICE:/ {print ""} {printf"|" substr($0, index($0,$1))}'
$ awk -v RS= -F'\n' -v OFS=' | ' '{$1 = FILENAME OFS $1}1' file1.txt file2.txt
file1.txt | SERVICE: 1 | TASK: 1 | RESULT: 1 | ADDITIONAL: 1
file1.txt | SERVICE: 2 | TASK: 2 | RESULT: 2 | ADDITIONAL: 2
file1.txt | SERVICE: 3 | TASK: 3 | RESULT: 3 | ADDITIONAL: 3
file2.txt | SERVICE: 1 | TASK: 1 | RESULT: 1 | ADDITIONAL: 1
file2.txt | SERVICE: 2 | TASK: 2 | RESULT: 2 | ADDITIONAL: 2
file2.txt | SERVICE: 3 | TASK: 3 | RESULT: 3 | ADDITIONAL: 3