ユーザー入力を呼び出す方法

ユーザー入力を呼び出す方法

パターンを一致させ、その後に2行を印刷しようとしています。次のコードを使用すると、これを正常に実行できます。

awk '/'202404'/{c=3}c&&c--' consolelog.log > testing.txt

202404端末に入力できるものに変更しようとします。これまで私は試しました

echo "Enter peak value"
read peak
awk '/${peak}/{c=3}c&&c--' consolelog.log > testing.txt

しかし、これはうまくいきません。

必ずしもawk、grep、sedなどを使用する必要はありません。ユーザーが入力したパターンと一致し、その後に2行を印刷するだけです。

***アップデート*****私はそれを持って遊んで働くようになりました。これは私が完全に恋しいことです。これが私がすることです。

awk 'c&&!--c;/'$peak'/{c=2}' consolelog.log > testing.txt

答え1

あなたのコード:

echo "Enter peak value"
read peak
awk '/${peak}/{c=3}c&&c--' consolelog.log > testing.txt

二重引用符でシェルが変数拡張を実行できないため、これは機能しません。awk構文で弱い引用符をたくさん使用して使用するのは非常に難しいので、これは良い方法です。

awkただし、スクリプトで環境変数を使用する方法はさまざまです。

独自の変数を宣言できます。

read peak
awk -vpeak="$peak" '$0 ~ peak { c=3 } c&&c--' consolelog.log > testing.txt

または、作成した内容を直接表示することもできますawkread

read peak
export peak
awk '$0 ~ ENVIRON["peak"] { c=3 } c&&c--' consolelog.log > testing.txt

答え2

echo "Enter peak value"
read peak
awk '/'"${peak}"'/{c=3}c&&c--' consolelog.log > testing.txt

この試み。

Bash変数を使用する前に、一重引用符を閉じる必要があります。二重引用符で囲むことをお勧めしますawk。それ以外の場合。

関連情報