jen*_*nny 3 regex unix awk grep
说我有这个数据:
hi helo tmp#100000 bye
100000 hi bye
hi 100000 bye
Run Code Online (Sandbox Code Playgroud)
并且 100000 是可变的: $var 我只想将 100000 作为一个完整的词 grep ,所需的输出:
100000 hi bye
hi 100000 bye
Run Code Online (Sandbox Code Playgroud)
我已经尝试了所有在 StuckOverflow 中得到回答的东西,但似乎没有任何效果:
grep "\b$var\b", grep -E "[[:blank:]]$var[[:blank:]]"还有更多。我认为问题,可能在#. 该解决方案需要适用于变量等于:hi.*bye作为正则表达式的情况。
请帮忙
非正则搜索使用awk:
awk -v var="$var" '
{for (i=1; i<=NF; ++i) if ($i == var) {print; break}}' file
Run Code Online (Sandbox Code Playgroud)
100000 hi bye
hi 100000 bye
Run Code Online (Sandbox Code Playgroud)
否则使用 custom 更短的 awk FS:
awk -F "(^|[[:blank:]])$var([[:blank:]]|$)" 'NF > 1' file
Run Code Online (Sandbox Code Playgroud)