2017-08-17 8 views
2

progtesis.awkの助けを借りて、prueba.txtから単語 "nel"が来る行の番号を変数 "line"として取得しようとしています私は執筆中です。AWKコマンドの出力を変数に入れる方法

私はターミナルでこれを実行しています:

awk -f progtesis.awk prueba.txt 

そしてprogtesisは、次のように見ている:

line=$(awk -f '/nel/{print NR}' FILENAME} 

echo "$line" 

任意の提案ですか?

+0

することができその親プロセスを変更せずに、(サブプロセス、子プロセス、またはシェルや他のインタプリタの外で定義される変数を呼び出すプログラムから呼び出されたプログラムから)これを行うことはできません。 –

+1

Pythonプログラムに、Javaプログラムを起動した変数を割り当てるように頼むようなものです。目的のためにJavaプログラムに何かを書き込まない限り、通信メカニズムはありません。 awkとbashは2つの別々の言語です。 (stdin; stdout; stderr;環境変数はparent-> childからのみコピーされ、childからparentへ戻ることはありません)。 –

+1

それは、上記の私の解釈が実際にあなたが尋ねようとしているものであるとは確信していません。あなたが持っている行動とあなたの行動とを区別するために英語を明確にすることができますか? *欲しいです*? –

答えて

1

外部awkスクリプトの必要がありません:

line=$(awk '/nel/ {print NR; exit}' "${filename}") 
echo "${line}" 

は、最初の行は/nel/にマッチの数が表示されます。

progtesis.awk

/nel/ {print NR; exit} 

が含まれている場合は、変数を割り当てる場合はそうでない場合は、bashのコマンドは、awkの変数を割り当てるとは反対に、*あなたと呼ばれるシェルで*

line=$(awk progtesis.awk "${filename}") 
echo "${line}" 
関連する問題