假设我有一个文件A:
fileA
fileB
假设我现在有一个名为:
fileA_someprefix_20160101.txt
现在我想要匹配 A 中以 this 为前缀的所有行filename
, 所以我认为:
FILE_NAME="fileA_someprefix_20160101.txt"
awk '"$FILE_NAME" ~ /^$1/' A.txt
我尝试了不同的方法来逃避美元符号,但没有成功。
在所有示例中,该字段都是表达式(左)而不是正则表达式的一部分。
我该如何reverse
开始?
答案1
如果您使用 GNU awk,它允许字符串表达式位于 的右侧~
。
awk -v FILE_NAME="$FILE_NAME" 'FILE_NAME ~ ("^" $1)' A.txt
答案2
您不能awk
在正则表达式中引用变量/regex/
。
如果你想检查前缀,POSIXly,请使用index()
函数:
FN="fileA_someprefix_20160101.txt" awk 'index(ENVIRON["FN"], $1) == 1' <file
来自POSIX 规范awk
:
指数(s,t)
返回字符串中的位置,以字符为单位,从 1 开始编号s其中字符串t首先发生,如果根本不发生则为零。