2014-12-11 2 views
0

나는라는 이름의 파일이 있습니다 출력의탈출 "("와 " '"는 AWK의 -v의 FS 인수에

#!/bin/bash 
outputFile=output.txt 
while read line 
do 
    stringLine=$line 
    echo $stringLine | awk -v FS='(include|string)' '{print $2}'  
done < $outputFile 

샘플 내용 : 나는 다음 코드 라인으로 라인을 읽을 수있는 경우 output.txt를 이 .txt입니다

sometext:include('js/jquery.ui.totop.js'); 
sometext:include('js/jquery.mousewheel.min.js'); 

내가 "('및 포함"사이의 문자열을 추출하고 싶습니다 "');" 을하지만 난 "('"로 탈출하려고하면

echo $stringLine | awk -v FS="(include\(\'|string)" '{print $2} 

그것은 다음 오류를 반환

awk: illegal primary in regular expression (include(|string) at string) 
input record number 1, file 
source line number 1 

당신은 내가 (그리고 '는 FS 인수에 탈출 할 수있는 방법에 대해 어떤 생각을 가지고 있습니까?

답변

1

입력에 string 문자열이 없기 때문에 string 문자열을 정규식에 포함 할 필요가 없습니다.

$ awk -v FS="include\\\('|'\\\)" '{print $2}' file 
js/jquery.ui.totop.js 
js/jquery.mousewheel.min.js 
+0

예, 그것은 완벽하게 작동 : 는'includeFile = $' (에코 $ stringLine가 | '{$ 2 인쇄}'| AWK -v FS =이 "\\\) ''(\\\ 포함") 그게 마지막 줄 이었어 – user3709081

+0

awk -v FS = "include \\\ ('|'\\\)" '{print $ 2}'<<< "$ stringLine"' –

0

bash에서 \"으로 둘러싸인 문자열의 이스케이프 문자이기도합니다. 두 개의 백 슬래시를 사용하거나 "'으로 변경하고 '을 문자열 외부로 이동하여 \'으로 변경하십시오.