![awkステートメントで変数を使用するには? [コピー]](https://linux33.com/image/99748/awk%E3%82%B9%E3%83%86%E3%83%BC%E3%83%88%E3%83%A1%E3%83%B3%E3%83%88%E3%81%A7%E5%A4%89%E6%95%B0%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%EF%BC%9F%20%5B%E3%82%B3%E3%83%94%E3%83%BC%5D.png)
このようなスクリプトがあります。
#!/bin/ksh
echo "Enter the matching pattern"
read pattern
path= /home/siva/
echo "Navigating to $path"
cd $path
cat filename|awk '/$pattern/ {for (i=1; i<=10; i++) {getline;print}}'
$pattern
スクリプトの実行時に入力できません。
答え1
echo | awk -v variable='This is variable!' 'END{print variable}'
キーワードを使用して変数を渡すことができます-v
。そして使用しないでください$変数の場合は-bashではありません。 awkの目的$フィールドにアクセスします。
答え2
#!/bin/ksh
echo "Enter the matching pattern"
IFS= read -r pattern
path=/home/siva/
echo "Navigating to $path"
cd "$path" || exit
awk -v pattern="$pattern" '$0 ~ pattern{for (i=1; i<=10; i++) {getline;print}}' filename
- awk -v を使用して awk スクリプトに変数を渡します。
- catは不要です - awkはファイルを直接処理できます