如何在 awk 语句中使用变量?

如何在 awk 语句中使用变量?

我有一个这样的脚本

#!/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
  1. 使用 awk -v 将变量传递到 awk 脚本中
  2. cat 是不必要的 - awk 可以直接处理文件

相关内容