sed 在开头放置圆括号并在第 4 行结束

sed place parentheses at the beginning and close on the 4th line

我试图在第一行放置一个左括号并将其作为第四行的末尾关闭。下面是数据示例,后面是我要查找的输出。

tester1
SERVICE_TICKET_CREATED
Thu Mar 19 23:27:57 UTC 2015
192.168.1.3
tester2
SERVICE_TICKET_CREATED
Fri Mar 20 00:31:59 UTC 2015
192.168.1.2
(tester1
SERVICE_TICKET_CREATED
Thu Mar 19 23:27:57 UTC 2015
192.168.1.3)
(tester2
SERVICE_TICKET_CREATED
Fri Mar 20 00:31:59 UTC 2015
192.168.1.2)

使用awk你可以这样做

awk 'NR%4==1{print "("[=10=]; next} NR%4==0{print [=10=]")"; next}1'

测试

$ awk 'NR%4==1{print "("[=11=]; next} NR%4==0{print [=11=]")"; next}1' input
(tester1
SERVICE_TICKET_CREATED
Thu Mar 19 23:27:57 UTC 2015
192.168.1.3)
(tester2
SERVICE_TICKET_CREATED
Fri Mar 20 00:31:59 UTC 2015
192.168.1.2)

更短的版本

awk 'NR%4==1{[=12=]="("[=12=]} NR%4==0{[=12=]=[=12=]")"}1'
sed -r 's/^/(/;N;N;N;s/$/)/' input

N 将下一行读入缓冲区。 s/^/(/ 在开头放置一个左括号,s/$/)/ 在缓冲区末尾放置一个右括号。