【发布时间】:2019-06-18 20:03:54
【问题描述】:
我想编写一个与“%”字符匹配的 shell 脚本并删除所有内容,直到找到特定的字符。 [A-G]、[a-g]、[m-n]、[p-s] 括号中的特定字符范围。
例如,我想将 %0.h2d 更改为 %d。
到目前为止,我已经查看了许多解决方案,但没有找到我想要的,尤其是关于多个括号的解决方案。我最初使用以下代码的计划是先隔离字符串,然后再进行删除:
awk '{for(i=1;i<=NF;i++) {if ($i == "%") beginning=i; if($i == [ A-G ] || $i == [ a-g ] || $i ==[ m-n ] || $i == [ p-s ]) ending=i }; for (j=beginning;j<=endin g;j++) printf $j" ";printf "\n" }' .annex/file.c
我的代码语法不正确,我得到的是一堆警告:
awk: syntax error at source line 1
context is
{for(i=1;i<=NF;i++) {if ($i == "%") beginning=i; if($i == >>> [ <<<
awk: illegal statement at source line 1
awk: illegal statement at source line 1`
当% 出现n 次时,我如何修改此代码或使用另一个代码删除% 和[A-G] || [a-g] || [m-n] || [p-s] 之间的内容?
【问题讨论】:
标签: string shell scripting pattern-matching text-processing