2014-12-11 46 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 = $(回聲$標線| awk的-v FS = 「包括\\\( '|' \\\)」 '{打印$ 2}')' 這是最後一行 – user3709081 2014-12-11 19:05:13

+0

我想你可以像'awk -v FS =「include \\\('|'\\\)''{print $ 2}''<<<」$ stringLine「 – 2014-12-11 19:07:33

0

在bash中,\也轉義字符被"包圍。請使用兩個反斜槓,或將"更改爲',並將原始' s移動到字符串外並將其更改爲\'