我有一个文本文件,其中包含一个示例记录,看起来像这样...
第一个月
我需要将位置3和5中嵌入的逗号替换为空格“”
下面是我在bash脚本中的awk代码...
AWK_script="BEGIN {
OFS=\",\"
}
{
for (i=1; i<=NF; i++)
{
if ( \$i==3 || \$i==5 )
{
gsub(\",\",\" \",\$i)
}
}
print \$0
}
"
echo 'Tampa,Orlando,"Jacksonville,FL",Miami,"Tallahassee,FL"' | awk -vFPAT='([^,]*)|("[^"]+")' "${AWK_script}"
字符串
我无法让gsub将嵌入的逗号替换为空格““。任何帮助将不胜感激。
1条答案
按热度按时间jvlzgdj91#
在awk脚本周围使用双引号并将其存储在字符串中,这让事情变得更加困难。字符串用于存储文本,函数用于存储代码。每个字符串或脚本都应该用单引号括起来,除非你需要双引号,然后使用它们,除非你需要没有引号。在它周围使用单引号,并将其存储在函数中。除此之外,如果您这样做,您可以摆脱awk脚本中双引号和
$
之前的所有反斜杠。我觉得这就是你想做的
字符串
型
有关使用awk解析CSV的更多信息,请参阅What's the most robust way to efficiently parse CSV using awk?,包括我更改
FPAT
设置的原因。