joe*_*joe 0 awk filenames line output
我有以下文件file1和file2(作为示例)
$cat file1.txt
SERVICE: 1
TASK: 1
RESULT: 1
ADDITIONAL: 1
SERVICE: 2
TASK: 2
RESULT: 2
ADDITIONAL: 2
SERVICE: 3
TASK: 3
RESULT: 3
ADDITIONAL: 3
Run Code Online (Sandbox Code Playgroud)
$cat file2.txt
SERVICE: 1
TASK: 1
RESULT: 1
ADDITIONAL: 1
SERVICE: 2
TASK: 2
RESULT: 2
ADDITIONAL: 2
SERVICE: 3
TASK: 3
RESULT: 3
ADDITIONAL: 3
Run Code Online (Sandbox Code Playgroud)
我需要以下输出:
文件的名称和每个块在SERVICE上循环:在下面的1行中用管道"|"分开
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
Run Code Online (Sandbox Code Playgroud)
你能帮我找到实现这个目标的方法吗?
到目前为止,我能够把它排成一行,但我有问题,在每个块循环上获取文件名在SERVICE上:
我拥有的命令如下:
cat * | awk -F ":" '/^SERVICE:/ {print ""} {printf"|" substr($0, index($0,$1))}'
Run Code Online (Sandbox Code Playgroud)
非常感谢您的帮助
$ 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
Run Code Online (Sandbox Code Playgroud)