sed 또는 awk를 사용하여 줄 앞에 파일 접두사를 붙입니다.

sed 또는 awk를 사용하여 줄 앞에 파일 접두사를 붙입니다.

아래 출력 파일과 유사한 내용을 얻기 위해 예제 입력 파일을 어떻게 변경합니까?

입력 파일:

/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;}' 

그러면 /' '로 시작하는 접두사가 캡처됩니다...

관련 정보