如何在AWK上发送参数以替换参数。 Unix Korn Shell

时间:2016-08-23 22:28:34

标签: shell unix awk replace parameters

我正在尝试更换参数,以便在使用AWK搜索文件中的字符串时更改值。

这可能吗?我这样做。

DisplayMessage()
{
  ##Parameter 1 = Message ID.
  MessageFile="/dev/fs/C/Users/salasfri/Desktop/Messages.txt"
  Message=$(awk '$1 ~ /^'$MessageID'$/ {$1=""; print $0}' $MessageFile)
}

消息文件在“MessageFile”文件中查找:

0005                The file ${1} was not tranmitted.

它搜索0005并收到消息“文件$ {1}未被传输。”

我想用文件名

替换$ {1} 使用awk可以实现这一点吗?任何想法?

1 个答案:

答案 0 :(得分:1)

这应该做......

awk '$1~/^'$MessageID'$/ {$1=""; sub("\\${1}",FILENAME); print}' 

但也许你想改成

awk -v mid="${MessageID}" '$1==mid {$1=""; sub("\\${1}",FILENAME); print}' 

因为您正在寻找完全匹配,而不是模式匹配。最好使用awk变量而不是引用舞蹈。