gpt4 book ai didi

linux - 搜索字符串的组合和模式

转载 作者:太空宇宙 更新时间:2023-11-04 12:23:35 25 4
gpt4 key购买 nike

需要部分 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com