gpt4 book ai didi

linux - 将带有单引号的 awk 程序嵌入到 shell 脚本中

转载 作者:太空宇宙 更新时间:2023-11-04 03:37:06 24 4
gpt4 key购买 nike

我有一个单行文本文件 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)

最佳答案

合并使用单引号设置变量的建议并删除不必要的 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

关于linux - 将带有单引号的 awk 程序嵌入到 shell 脚本中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31182101/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com