Chinaunix

标题: 请问如何用awk或者sed把第二行的某个字段合并到第一行末尾? [打印本页]

作者: kamui0523    时间: 2013-08-16 16:52
标题: 请问如何用awk或者sed把第二行的某个字段合并到第一行末尾?
Completed 200 OK in 13ms (Views: 6.5ms | ActiveRecord: 2.5ms)
Started GET "/users/2251663/moments" for 192.168.10.11 at 2013-08-16 15:15:17 +0800
Completed 200 OK in 2318ms (Views: 222.9ms | ActiveRecord: 1999.6ms)
Started GET "/cluster/2865765/brief" for 192.168.10.11 at 2013-08-16 15:15:23 +0800
Completed 200 OK in 5ms (Views: 1.9ms | ActiveRecord: 1.4ms)
Started GET "/photo/2865765/brief" for 192.168.10.11 at 2013-08-16 15:15:23 +0800
Completed 200 OK in 8ms (Views: 3.1ms | ActiveRecord: 1.6ms)

把/users/2251663/moments这段放到前一行末尾去
比如我要得到这样的结果Completed 200 OK in 13ms (Views: 6.5ms | ActiveRecord: 2.5ms) /users/2251663/moments

谢谢了~
作者: dn833    时间: 2013-08-16 17:19
  1. awk '{printf(NR%2 != 0)?$0" ":$3"\n"}END{print ""}'
复制代码

作者: 代号:军刀    时间: 2013-08-16 17:24
  1. sed -r 'N;s/(.*)\n.*GET\s+"([^"]*)".*/\1 \2/'
复制代码

作者: seesea2517    时间: 2013-08-19 11:26
3楼的就行了,画蛇添足另一个方案:
  1. [seesea@UC ~]$ cat file | sed ':a; $!{N; ba}; ${s/\nStarted GET "/ /g; s/" for[^\n]*//g}'   
  2. Completed 200 OK in 13ms (Views: 6.5ms | ActiveRecord: 2.5ms) /users/2251663/moments
  3. Completed 200 OK in 2318ms (Views: 222.9ms | ActiveRecord: 1999.6ms) /cluster/2865765/brief
  4. Completed 200 OK in 5ms (Views: 1.9ms | ActiveRecord: 1.4ms) /photo/2865765/brief
  5. Completed 200 OK in 8ms (Views: 3.1ms | ActiveRecord: 1.6ms)
复制代码





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2