我要打印文件中倒数第二个字符和倒数第二个字符相同的所有行,例如以下文件(右边的注释是出于说明目的,它们不存在于文件中):< / p>
hello james # second/second-last are 'ee' - match
how are you? # 'ou'
are you okay? # 'ry'
Is it past # 'ss' - match
然后输出应该是
hello james
Is it past
我该怎么做?
答案 0 :(得分:1)
您可以将grep
用于分组和反向引用,例如:
grep -x ".\(.\).*\1." f1.txt
此模式按给定顺序查找:
.
\(.\)
.*
\1
.
-x
意味着它必须匹配 whole 行,而不仅仅是它的一部分(与使用--line-regexp
相同)。结果,将仅打印匹配的行。
答案 1 :(得分:1)
这是一个awk
,用于比较倒数第二个和倒数第二个字符:
awk '{b=split($0,a,"")} a[2]==a[b-1]' file
hello james
Is it past
如果该行的末尾有空格或制表符,则可以这样修剪掉它:
awk '{$1=$1;b=split($0,a,"")} a[2]==a[b-1]'
hello james
Is it past