[已解决]awk的pattern是shell变量,变量扩展完是一个包含特殊字符的内容该怎么办?

sh/bash/dash/ksh/zsh等Shell脚本
回复
科学之子
帖子: 2229
注册时间: 2013-05-26 6:58
系统: Debian 9
送出感谢: 833 次
接收感谢: 30 次

[已解决]awk的pattern是shell变量,变量扩展完是一个包含特殊字符的内容该怎么办?

#1

帖子 科学之子 » 2017-07-18 1:08

awk的pattern是shell变量,变量扩展完是一个包含特殊字符的内容该怎么办?

例如:

代码: 全选

root@debian:~# losetup |awk "/${loopfile}/ {\$1}"
awk: cmd. line:1: //home/username/swap_test/ {$1}
awk: cmd. line:1:                            ^ syntax error
root@debian:~# 
Wed Jul 19 18:10:44 CST 2017补充:
额外收获:
一开始没看懂2楼的代码
https://www.tutorialspoint.com/awk/awk_workflow.htm
$0原来代表的是当前整行,而非整个输入
上次由 科学之子 在 2017-07-19 18:13,总共编辑 1 次。
头像
astolia
论坛版主
帖子: 3027
注册时间: 2008-09-18 13:11
送出感谢: 1 次
接收感谢: 497 次

Re: awk的pattern是shell变量,变量扩展完是一个包含特殊字符的内容该怎么办?

#2

帖子 astolia » 2017-07-18 19:47

你这种情况就不该用正则匹配

代码: 全选

export loopfile
losetup | awk '{if(index($0,ENVIRON["loopfile"])>0){print $0}}'
这些用户感谢了作者 astolia 于这个帖子:
科学之子 (2017-07-19 14:57)
评价: 3.7%
回复

回到 “Shell脚本”