Sat*_*ish 1 awk text-processing
我有一个包含以下输出的文件。
ora.abc.db
1 ONLINE ONLINE serverA Open
2 ONLINE ONLINE serverB Open
ora.xyz.db
1 ONLINE ONLINE serverA Open
2 ONLINE ONLINE serverB Open
2 ONLINE ONLINE serverC Open
Run Code Online (Sandbox Code Playgroud)
我想用以下方式格式化这个文件,但我只想使用shell script
,我相信我们可以使用 awk 但我没有逻辑
abc abc1 ONLINE serverA
abc abc2 ONLINE serverB
xyz xyz1 ONLINE serverA
xyz xyz2 ONLINE serverB
xyz xyz3 ONLINE serverC
Run Code Online (Sandbox Code Playgroud)
这可以是一种方法:
$ awk '/^ora/ {split($0,a,"."); next} {print a[2], a[2]$1, $2, $4}' a
abc abc1 ONLINE serverA
abc abc2 ONLINE serverB
xyz xyz1 ONLINE serverA
xyz xyz2 ONLINE serverB
xyz xyz2 ONLINE serverC
Run Code Online (Sandbox Code Playgroud)
/^ora/
适用于以ora
.开头的行。在那些中,split
基于点的内容.
并将其存储在数组中a
。因此,它是a[1]=ora
,a[2]=abc
...然后next
让awk
跳转到下一行。print
打印数组的第二个字段a
加上行中的不同元素:$1
说明第一个,$4
说明第四个。