我需要在文件中找到以下指定输入字符串开头的行,并在部分匹配时替换文件的内容。
输入参数:
场景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