我有一个这样的文本文件:
Once upon a time, there lived a rabbit who lived in the forest.
One day, rabbit found bear.
Bear said, "Hello!"
给出一封信,例如“e”,我需要输出e + the next 2 characters
的所有搜索,例如,这将打印以下内容:
e u
e,
ere
e l
ed
ed
est
e d
ear
ear
ell
每次搜索到的字符出现在BASH的文件中时,如何打印搜索到的字符加上接下来的2个字符?
答案 0 :(得分:3)
您可以使用perl
吗?
perl -lne 'print "e",$_ for $_ =~ /(?<=e)(..)/g' file
$ perl -lne 'print "e",$_ for $_ =~ /(?<=e)(..)/g' file
e u
e,
ere
e l
ed
ed
e f
est
e d
ear
ear
ell
答案 1 :(得分:2)
要包含重叠字符串,您可以使用:
while IFS= read -r line
do
while [ "${#line}" -gt 2 ]
do
if [ "${line:0:1}" = 'e' ]
then
echo "${line:0:3}"
fi
line="${line:1}"
done
done
答案 2 :(得分:0)
如果你的grep支持-o,那么它很容易
grep -o e..
答案 3 :(得分:-1)
艰难的方式
echo $(cat file.txt ) > temp
grep -o . temp | nl | grep e | cut -f1 | xargs -i -n1 echo "{}; {} + 2;" | bc | xargs -n2 echo | sed 's/ /-/' | xargs -i{} -n 1 cut -c {} temp