Sil*_*033 5 grep text-processing regular-expression
我想找到在行首和行尾具有相同单词的所有行。
例如:
goodword fgdlakj 3t sfkl 43lk fkl goodword
bad sfa;lk3t dgk;gs 34;kl bad334
singleword
Run Code Online (Sandbox Code Playgroud)
期望输出
goodword fgdlakj 3t sfkl 43lk fkl goodword
singleword
Run Code Online (Sandbox Code Playgroud)
我的代码是:
egrep "(^.+)([ ]+.*\1)$"
Run Code Online (Sandbox Code Playgroud)
如果该行有 1 个以上的单词,它确实有效。但我也想要一行包含一个单词来匹配。
所以我试过:
egrep "(^.+)($|([ ]+.*\1)$)"
Run Code Online (Sandbox Code Playgroud)
它不再起作用了-我不知道为什么。
我建议awk
改用:
awk '$1==$NF' file
Run Code Online (Sandbox Code Playgroud)
此解决方案的优点是阅读起来更简单,其次您可以轻松更改字段分隔符(使用-F
选项),例如。即使行首和行尾的空格数相同,也会匹配。
grep -Ex '(\S+)(.*\1)?' file
Run Code Online (Sandbox Code Playgroud)