在 bash 中用空格分隔整个单词

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作为正则表达式的情况。

请帮忙

anu*_*ava 6

非正则搜索使用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)