如何使用 AWK 或 SED 更改变量的第三列,使其用单引号括起来

如何使用 AWK 或 SED 更改变量的第三列,使其用单引号括起来

我有一个变量$out:

out=1,2,3,4,5

我想更改第三列,以便值得到单引号,如(我在这里讨论列,因为 $out 代表数据库条目的插入语句的值):

out=1,2,'3',4,5

有人知道如何使用 awk 或 sed 来完成这个吗?

答案1

如果:

out=1,2,3,4,5

sed

sed -E "s/[^,]+/'&'/3" <<<"$out"

awk

awk '{ $3 = q $3 q }1' FS=, OFS=, q="'" <<<"$out"

两种情况下的输出:

1,2,'3',4,5

答案2

仅限 Bash...

$ 出=1,2,3,4,5

$ echo $out | (IFS=',' 读取 abcde ;回显 $a $b $c $d $e )
1 2 3 4 5

$ echo $out | (IFS=',' 读取 abcde ;回显“$a,$b,'$c',$d,$e”)
1,2,'3',4,5

$ out="$(echo $out | ( IFS=',' read abcde ; echo "$a,$b,'$c',$d,$e" ))"

$ 回显 $out
1,2,'3',4,5

$

相关信息:www.tldp.org-> Bash 指南

相关内容