需要部分 bash 脚本的帮助,它需要找到特定的模式字符串。下面给出了一个示例字符串:
//*-----------
//* %%SET %%ABC = %%BLANK
//* %%SET %%RESTART = %%BLANK7
//* %%SET %%DANGO= 236985
//*-----------
//* %%IF %%ODATE EQ 123456
//* %%SET %%ABC= GSG34
//* %%SET %%RESTART = RESTART
//* %%ENDIF
//*-----------
//* %%IF %%ODATE EQ 463123
//* %%SET %%DANGO= 236985
//* %%ENDIF
//*-----------
//* %%IF %%ODATE EQ 15641
//* %%SET %%RESTART = %%BLANK7
//* %%ENDIF
//*-----------
- 我需要在 IF 和 ENDIF 条件下找到 ODATE、ABC、RESTART 的组合
- 我特别需要在 IF 和 ENDIF 之间进行检查。它还应检查 IF 和 ENDIF 之间存在三个参数 ODATE、ABC 和 RESTART 的条件。如果满足条件,那么它应该打印那些。
- 我尝试了以下命令
cat file | sed -n '/%%IF/,/%%ENDIF/p'
//* %%IF %%ODATE EQ 123456
//* %%SET %%ABC= GSG34
//* %%SET %%RESTART = RESTART
//* %%ENDIF
//* %%IF %%ODATE EQ 463123
//* %%SET %%DANGO = 236985
//* %%ENDIF
//* %%IF %%ODATE EQ 15641
//* %%SET %%RESTART = %%BLANK7
//* %%ENDIF
我只需要在下面找到:
//* %%IF %%ODATE EQ 123456
//* %%SET %%ABC= GSG34
//* %%SET %%RESTART = RESTART
//* %%ENDIF
我怎样才能做到这一点?
最佳答案
使用 sed:
sed -n '/%%IF /{:a;N;/%%ENDIF/!ba;/ODATE/{/ABC/{/RESTART/p;}}}' file
关于linux - 搜索字符串的组合和模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45345817/