我有一行文本文件nik.txt
和一个简单的awk脚本,如下所示:
LagartijaNick>cat nik.txt
hey the're
LagartijaNick>cat tmp.awk
BEGIN {}
{
searchName=tolower($0);
if ( searchName ~ /'re/ ) {
print $0
}
}
LagartijaNick>awk -f tmp.awk nik.txt
hey the're
上面的awk脚本按预期打印整个记录。但现在我必须将awk嵌入到BASH脚本中,如下所示:
#!/bin/bash
infile=$1
function doThis () {
awk 'BEGIN {}
{
searchName=tolower($0);
if ( searchName ~ /'re/ ) {
print $0
}
}' $infile
}
doThis
exit 0
返回:
./tmp.sh: line 9: syntax error near unexpected token `)'
./tmp.sh: line 9: ` if ( searchName ~ /\'re/ ) {'
简单,需要逃避单个语音标记?但我无法让它发挥作用。
我试过了:
if ( searchName ~ /\'re/ ) {
if ( searchName ~ /''re/ ) {
我做错了什么?我得到的只是语法错误...
我正在使用以下版本的bash:
LagartijaNick>/bin/bash --version
GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu)
答案 0 :(得分:0)
将设置变量的建议与单引号结合起来并删除不必要的BEGIN:
#!/bin/bash
infile=$1
function doThis () {
read -d '' cmd <<EOA
awk -vQ="'" '
{
searchName=tolower(\$0);
if ( searchName ~ Q"re" ) {
print \$0
}
}' $infile
EOA
eval $cmd
}
doThis
exit 0