2014-12-11 140 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移动到字符串外并将其更改为\'