搜索文件中部分匹配的字符串模式并替换它

我需要在文件中找到以下指定输入字符串开头的行,并在部分匹配时替换文件的内容。

输入参数:

场景1:

jQuery(span).hasClass("cycle-pager-active")

场景2:

true

STRING="user::r--,user::ourfrd:r--" 中可用的输入数据:

STRING="user::r--"`

我已应用以下逻辑消除了字符串中的逗号(如果可用),然后将每个字符串保留在数组中。然后我尝试在文件中搜索它,但是替换文件中的内容无法按预期工作。

对于方案1:

file.txt

对于方案2:

# file: /local/Desktop/myfile
# owner: me
# group: mygroup
user::rwx
user:myfrd:rwx
user:hisfrd:r-x
group::r-x
group:mygroup:rwx
mask::rwx
other::r-x

预期结果-修改后的文件数据

对于方案1:

#/bin/bash
STRING="user::r--,user:ourfrd:r--"
array=`echo $STRING | awk -F ',' '{ s = $1; for (i = 2; i <= NF; i++) s = 
s "\n"$i; print s; }'`
for word in ${array}
do
        sed -r -e 's/${array}[^{array}]+//g' file.txt
done

注意:在以上结果中,字符串“ user:ourfrd:r--”被新添加到文件中,因为文件中尚不存在该字符串。文件中仅存在部分匹配的字符串(如我们具有“ user :: rwx”的方式),而前几个字符“ user ::”与新的输入参数“ user :: r--”相匹配

对于方案2:

#/bin/bash
STRING="user::r--"
array=`echo $STRING | awk -F ',' '{ s = $1; for (i = 2; i <= NF; i++) s = 
s "\n"$i; print s; }'`
for word in ${array}
do
        sed -r -e 's/${array}[^{array}]+//g' file.txt
done
hash712 回答:搜索文件中部分匹配的字符串模式并替换它

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3144793.html

大家都在问