2010-03-17 4 views
1

awk에서 인쇄 한 내용을 텍스트 파일로 옮기는 데 도움이 필요합니다. 이것은 계속됩니다. previous quesion 모든 파일을 동일한 파일로 이동해야 추가 할 수 있습니다. 같은 파일에서 다른 하나를 추가awk가 파일로 출력합니다.

nawk -v file="$FILE" 'BEGIN{RS=";"} 
    /select/{ gsub(/.*select/,"select");gsub(/\n+/,"");print file,$0;} 
    /update/{ gsub(/.*update/,"update");gsub(/\n+/,"");print file,$0;} 
    /insert/{ gsub(/.*insert/,"insert");gsub(/\n+/,"");print file,$0;} 
    ' "$FILE" 

어떻게 텍스트 파일로 인쇄 결과를 얻을 특정

일하려면?

답변

4

입출력 방향 전환은 쉘을 사용하여 작업 할 때 매우 기본입니다. 행을 추가하려면 >>을 사용하십시오. 예 :

nawk -v file="$FILE" 'BEGIN{RS=";"} 
    /select/{ gsub(/.*select/,"select");gsub(/\n+/,"");print file,$0;} 
    /update/{ gsub(/.*update/,"update");gsub(/\n+/,"");print file,$0;} 
    /insert/{ gsub(/.*insert/,"insert");gsub(/\n+/,"");print file,$0;} 
    ' "$FILE" >> newfile 

아직 셸 스크립팅을 읽는 시간을 보냅니다.

+0

감사합니다. 대단히 감사합니다. – Harish

3

죄송합니다. awk 버프는별로 없지만 쉘이 처리하지 않아야합니까?

awk YOUR_AWK_STUFF_HERE >> appended.file.name 
2

다른 답변은 셸 리디렉션을 제안합니다. 사실 awkprint 문의 일부로 리디렉션을 허용합니다. awk man page에서

nawk -v file="$FILE" 'BEGIN{RS=";"} 
     /select/{ gsub(/.*select/,"select");gsub(/\n+/,"");print file,$0 >> results.txt;} 
     /update/{ gsub(/.*update/,"update");gsub(/\n+/,"");print file,$0 >> results.txt;} 
     /insert/{ gsub(/.*insert/,"insert");gsub(/\n+/,"");print file,$0 >> results.txt;} 
     ' "$FILE" 

:> 파일 또는 >> 파일이 존재 또는 파이프에 경우

인쇄 문은 파일을 표준 출력 (또는 에 그 인수를 인쇄하는 경우 | cmd는 ) 현재 출력 필드 구분 기호 으로 구분되고 출력 레코드 구분 기호로 으로 끝납니다. 파일 이고 cmd는 리터럴 이름이거나 괄호 안의 표현식 일 수 있습니다. 동일한 다른 문에서 문자열 값 은 동일한 열린 파일을 나타냅니다.

관련 문제