我有一个包含以下内容的测试文件:
awk this
and not awk this
but awk this
so do awk this
我在bash中尝试了以下awk命令,但每个命令都没有输出:
f=awk; awk '/$f/ && !/not/' test.txt
f=awk; awk '/\$f/ && !/not/' test.txt
f=awk; awk '/"$f"/ && !/not/' test.txt
f=awk; awk -v f="$f" '/f/ && !/not/' gtest.txt
使用双引号"
会产生"未找到事件"由!
引起的shell错误。
如何搜索变量并在同一命令中否定另一个字符串?
答案 0 :(得分:2)
像这样使用awk
:
f='awk'
awk -v f="$f" -v n='not' '$0 ~ f && $0 !~ n' file
awk this
but awk this
so do awk this
或者,如果您不想将n='not'
传递给awk
:
awk -v f="$f" '$0 ~ f && $0 !~ /not/' file
awk this
but awk this
so do awk this
答案 1 :(得分:0)
awk -vf=awk '$0 ~ f && !/not/' file