根据文件模式查找并替换所有文件中的单词

根据文件模式查找并替换所有文件中的单词

我有一个在多个文件中调用的变量 "User": "x-73098",文件名如下astro_root_sys-dev.txt.

如何查找所有具有 "User": "x-73098" 变量的文件并将该变量值从 动态替换"User": "x-73098""User": "sys_user".

用户值 (x-73098) 不会在所有文件中都相同,x- 后面的数字在许多文件中有所不同。

答案1

sed线性将搜索包含“unknown”的文档并用“sys_user”替换它:

sed -i 's/"unknown"/"sys_user"/g' *.txt

为了更改所有以 结尾的字符串-73098

如果 x 是一个数字:

sed 's/[0-9]-73098/"sys_user"/g'  *.txt

如果 x 是小写字母:

sed 's/[a-z]-73098/"sys_user"/g'  *.txt

如果 x 是大写字母:

sed 's/[A-Z]-73098/"sys_user"/g'  *.txt

如果 x 是大写字母、小写字母或数字:

sed -i 's/[a-zA-Z0-9]-73098/User: "sys_user"/g' *.txt

答案2

尝试

for FN in astro*.txt; do sed -r 's/(User: ")x-[[:digit:]]*"/\1sys_user"/' "$FN" > /tmp/TMP$$; mv /tmp/TMP$$ "$FN"; done

相关内容