有人可以解释下面的代码和以下查询

时间:2013-07-23 13:42:17

标签: linux unix awk

我确实使用了手册,但我无法将所有选项放在一起,以了解上述代码实际上在做什么。

awk -v v='"' 'BEGIN{FS=OFS=v}{gsub(",","",$2);print }'  \
  ${SOURCE_LOCATION}/TEMP1_$file_name>${SOURCE_FILE_LOCATION}/TEMP2_$file_name

我们何时必须在'$'之后的代码中使用花括号,何时不使用。请解释。任何帮助都非常感谢。

2 个答案:

答案 0 :(得分:2)

此命令将删除第二个字段中的所有逗号。字段分隔符是引号字符"(由FS指定)。

例如,以下字符串:

something "string, with, commas" something "else, here, and more"

将转换为:

something "string with commas" something "else, here, and more"

@Joni已经很好地解释了{}在变量名中的重要性。

从文件${SOURCE_LOCATION}/TEMP1_$file_name读取输入,输出重定向到${SOURCE_LOCATION}/TEMP2_$file_name

答案 1 :(得分:1)

当变量名后面跟不是变量名的一部分但可能与之混淆的东西时,你必须使用大括号语法。例如,比较

hello="Hello"
echo $hello_world

hello="Hello"
echo ${hello}_world

第一个输出一个空行(或shell变量hello_world的值,如果存在),第二个输出Hello_world

在您的情况下,它们不是必需的,因为斜杠永远不会是变量名称的一部分。有些人更喜欢使用括号来清楚变量开始的位置以及变量的结束位置,即使它们不是必需的。