-1

我正在执行

/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" 

它的工作。有什么建议么。

4

1 回答 1

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 "" }'

如果这不能回答您评论中的问题,请使用示例输入和预期输出提出一个新问题。

于 2013-10-08T20:07:15.893 回答