2016-08-23 7 views
0

AWKを使ってファイル内の文字列を検索するときに、パラメータを置き換えて値を変更しようとしています。AWKでパラメータを置き換えてパラメータを置き換える方法。 Unix Korn Shell

これは可能ですか?私はこれをやっている。メッセージ・ファイルは、ファイル "messagefileを" で、この探し

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

: "{1}はtranmittedされなかったファイル$"

0005    The file ${1} was not tranmitted. 

はそれが0005を検索し、メッセージを取得します

私は、これはAWKで可能かもしれないファイルの名前

で$ {1}を交換したいですか?何か案が?

+0

「ファイル名」は何を表していますか? 'MessageFile'?他のファイル名ですか?どの変数が 'ファイルの名前'を保持していますか? – Jdamian

+0

文字列中の部分文字列を置き換えるには 'sub()'や 'gsub()'関数を使います: 'sub(" $ \ {1 \} "、" my filename "、$ 0)'。 '{1}'はE.R.Eとして特別な意味を持つことを覚えておいてください。エスケープ文字を使用する必要があります。 – Jdamian

答えて

1

これは...

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

を行う必要がありますが、おそらくあなたは、あなたが完全一致ではなく、パターンマッチを探しているので、

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

に変更したいです。また、quote danceの代わりにawk変数を使う方が良い。

関連する問題