locale::global(gen("pl_PL.UTF-8"));
这是用于从给定文本中提取单词$ echo "name=hello 123" | sed 's/.*name=\(.*\)\s.*/\1/'
(=和空白之间的字符串)的命令。现在,我想使用sed将hello
替换为hello
。
输出应为
*****
答案 0 :(得分:0)
您只需要对匹配的部分执行替换-sed
没有为此提供语法,您可以使用循环来解决。
$ # tested on GNU sed, syntax might vary for other implementations
$ echo 'name=foo 123' | sed -E ':a s/(name=\**)[a-z]/\1*/; ta'
name=*** 123
$ echo 'name=hello 123' | sed -E ':a s/(name=\**)[a-z]/\1*/; ta'
name=***** 123
或使用perl
允许在替换部分使用代码
$ echo 'name=foo 123' | perl -pe 's/name=\K[^ ]+/$&=~s|.|*|gr/e'
name=*** 123
$ echo 'name=hello 123' | perl -pe 's/name=\K[^ ]+/$&=~s|.|*|gr/e'
name=***** 123
$ # or construct a string based on length of matched portion
$ echo 'name=hello 123' | perl -pe 's/name=\K[^ ]+/"*" x length($&)/e'
name=***** 123
答案 1 :(得分:0)
使用sed:
echo "name=hello" | sed 's/\(name\)=\(.\+\)/\1=*****/
如果要用*替换每个字符,请参阅Sundeep的回复。