아래 출력 파일과 유사한 내용을 얻기 위해 예제 입력 파일을 어떻게 변경합니까?
입력 파일:
/tmp/로그 2015년 10월 13일 00:19:13 온도 기록 1 10/13/15 00:19:13 가상로그 2015년 10월 13일 01:19:12에 테스트됨 2015년 10월 13일 01:19:12 오류 /tmp/오류 2015년 10월 13일 00:16:10 x 2015년 10월 13일 00:16:10 2015년 10월 13일 01:16:10 2015년 10월 13일 01:16:10 /tmp/액세스 2015년 10월 13일 00:56:14b 2015년 10월 13일 00:56:14
결과물 파일:
/tmp/log10/13/15 00:19:13 templogs1 /tmp/logs 10/13/15 00:19:13 가상 로그 /tmp/logs 10/13/15 01:19:12 테스트 /tmp/logs 10/13/15 01:19:12 오류 /tmp/오류 10/13/15 00:16:10 x /tmp/오류 10/13/15 00:16:10 y /tmp/오류 10/13/15 01:16:10 z /tmp/오류 10/13/15 01:16:10 /tmp/접속 10/13/15 00:56:14 b /tmp/접속 10/13/15 00:56:14 c
답변1
사용해 보세요sed
sed '
/^\//{ # execite block if line start with «/»
h # put line into hold-space
d # clean, return to beginning
} # end block
G # append hold-space to line
s/\(.*\)\n\(.*\)/\2 \1/ # exchange first and last part of line
' input.file > output.file
그리고 다른 변형
sed '
/^\//{ # execute from line started with «/»
:1 # mark return point
N # get next line
/\n\//D # if such next line started «/» remove previous
#+and starts from the beginning with last line
s/\n/ /p # change newline with space and prints both lines
s/ .*// # removes last line
$!b1 # return to marked point with fist line if not end
d # clean all (finish)
}
' input.file > output.file
답변2
노력하다
awk 'substr($1,1,1) == "/" { prefix=$0 ; next ; }
{ printf "%s %s\n",prefix,$0;}'
그러면 /
' '로 시작하는 접두사가 캡처됩니다...