awk中怎样用变量

方法一:   awk '$2=="'"$var"'"{print}' file
eg: 
     aa="st" ; bb="tao"
      echo $bb | nawk '{if("'$aa'"=="st") print "ok"}'                    引用变量aa时应先双引再单引.....    

方法二:   用户订关键字,在数据文件中找到关键字后的所有内容输入到另一个文件
数据文件内容如下:
Sun May 25 23:39:22 2008
Thread 1 advanced to log sequence 17543
Current log# 1 seq# 17543 mem# 0: /dev/md/rdsk/d108
Current log# 1 seq# 17543 mem# 1: /dev/md/rdsk/d109
Mon May 26 04:36:11 2008
Thread 1 advanced to log sequence 17545
Current log# 3 seq# 17545 mem# 0: /dev/md/rdsk/d112
Current log# 3 seq# 17545 mem# 1: /dev/md/rdsk/d113
shell脚本如下:
key="May-26"
cat info.l | nawk 'BEGIN{"echo '$key'" | getline param; flat=0};{value=$2"-"$3;if(value==param || flat==1) {print $0;flat=1}}' > ${dataFile}                即格式为: 双引 echo 单引 变量 单引 双引 接收变量
 

在 `awk` 中,可以使用 `match()` 函数结合变量进行模式匹配。`match()` 函数用于查找字符串中是否包含与正则表达式匹配的内容,并返回匹配的起始位置。通过将变量传递给 `awk` 或在脚本中定义变量,可以实现动态的模式匹配操作。 以下是一个示例,展示如何将外部变量传递给 `awk` 并使用 `match()` 函数进行匹配: ```bash var="example" awk -v pattern="$var" 'match($0, pattern) { print "Match found at position:", RSTART, "Length:", RLENGTH }' filename.txt ``` 在该示例中,`-v pattern="$var"` 将外部变量 `var` 的值传递给 `awk` 中的变量 `pattern`。`match($0, pattern)` 检查当前行 `$0` 是否包含与 `pattern` 匹配的内容。如果找到匹配项,则打印匹配的起始位置 `RSTART` 和匹配内容的长度 `RLENGTH` [^1]。 如果变量需要在 `awk` 脚本内部定义,也可以直接使用: ```bash awk 'BEGIN { pattern = "example" } { if (match($0, pattern)) { print "Match found at position:", RSTART, "Length:", RLENGTH } }' filename.txt ``` 在此脚本中,`pattern` 变量在 `BEGIN` 块中定义,并在 `match()` 函数中使用。这种方式适用于不需要从外部传入变量的情况 [^1]。 此外,`match()` 函数支持正则表达式,因此可以结合正则表达式和变量实现更复杂的匹配逻辑。例如,使用正则表达式匹配以某个变量开头的字符串: ```bash var="prefix" awk -v pattern="^"pattern"" 'match($0, pattern) { print "Matched line:", $0 }' filename.txt ``` 此命令中,`pattern` 变量被构造为以 `^` 开头的正则表达式,表示匹配以变量值开头的行 [^1]。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值