插入 '。'在 grep 正则表达式中的所有字符之间和在管道 grep 中使用

insert '.' between all characters in grep regex and use in piped grep

我想在给定输入字符串中的每个字符之间插入 '.',然后将其用作管道中的参数

我正在执行以下操作之一:

tail -f file.txt | grep -a 'R.e.s.u.l.t.'
tail -f file.txt | awk '/R.e.s.u.l.t./'

当 使用额外的 bash 默认函数

tail -f 创建的缓冲区接收输入
tail -f file.txt | grep -a -e "$(echo Result | sed 's/./&./g')"

这与单词 Result 作为 sed 的输入相呼应(考虑使用 here-string),它将每个字符替换为自身后跟一个.,然后将输出用作 grep 的搜索表达式。例如,如果您想用点搜索 -argument-e 可以保护您免受不幸。如果字符串在变量中,那么您也可以在其周围使用双引号:

result="Several Words"
tail -f file.txt | grep -a -e "$(echo "$result" | sed 's/./&./g')"

awk 版本:

tail -f file.txt | 
awk -v word="Result" '
    BEGIN {gsub(/./, "&.", word); sub(/\.$/, "", word)} 
    [=10=] ~ word
'