sed命令无法正常工作

时间:2013-10-07 09:25:38

标签: sql bash sed

我正在执行

/bin/sed -i '/^$/d' $PRIMARY_K
    VALUE=`/bin/cat $PRIMARY_K`
    echo "$VALUE"
    PK=SYS
    NEW="$PK$VALUE"
echo "New Primary Key Constraint for $s- $NEW"  

 /bin/sed "s/$VALUE/$NEW/g" ../../../PartitioningUtility/sql/table7.sql > 
../../../PartitioningUtility/sql/exe.sql

最后一行/bin/sed "s/$VALUE/$NEW/g"未替换该值。

当我尝试使用 HARDCODED 值时,它正在运行。 例如。我试过了

/bin/sed "s/MAYUR/SAWANT/g" 

它的工作。 任何建议。

1 个答案:

答案 0 :(得分:1)

将您的脚本更改为:

awk -v s="$s" '
NR==FNR {
    if (NF) {
        value = $1
        print value | "cat>&2"

        pk = "SYS"
        new = pk value

        printf "New Primary Key Constraint for %s- %s\n", s, new | "cat>&2"
    }
    next
}
{
    gsub(value,new)
    print
}
' "$PRIMARY_K" ../../../PartitioningUtility/sql/table7.sql > 
../../../PartitioningUtility/sql/exe.sql

修复您当前的错误以及待处理的性能,维护,可靠性等问题。

将数字放在每行的字段之前只是:

awk '{ for (i=1; i<=NF; i++) printf "%s%s.%s",(i==1?"":OFS),i,$i; print "" }'

如果这不能回答您的评论中的问题,请询问带有示例输入和预期输出的新问题。