匹配多行字符串与shell(正则表达式+顺序)

时间:2015-11-15 14:28:38

标签: regex shell

我想搜索下面给出的字符串匹配文件文本

[zero or more white-space]AA[one or more white-space]AA[zero or more white-space]
[zero or more white-space]BB[one or more white-space]BB[zero or more white-space]

匹配行应该是正确的顺序

注意:订单不正确

BB    BB

other lines

AA AA

没有重复匹配

注意:重复的行匹配

  AA AA

 AA    AA
在'AA AA'和'BB BB'之间的

零个或多个行(任何字符串)可以包含

find=$(grep -e "\(^[[:space:]]*AA [[:space:]]*AA[[:space:]]*$\|[[:space:]]*BB [[:space:]]*BB[[:space:]]*\)" myfile.txt | grep -oP '^[[:space:]]*AA[[:space:]]*AA[[:space:]]*\s+[[:space:]]*BB[[:space:]]*BB[[:space:]]*$')
duplicate=$(sort $in_file | uniq -d | (grep "\(^ *AA \+AA *$\|^ *BB \+BB *$\)") )

if [[ -z $duplicate ]] && [[ ! -z $find ]] ; then
  echo 'OK'
else
  echo 'NOT OK'
fi

上面的脚本工作正常,如果字符串有空格AA[space]AA但是如果有空格,而AA[space][tab]AA这样的标签不起作用

问题我不能给{s + grep -oP

0 个答案:

没有答案