我尝试查看旧帖子,但没有得到我的答案,提前致谢!我有一些文件,其中 indisei 具有相同模式的行,我想在特定字符串后用“A”替换以下 [mau] 之一: n=22 string="abnt7777/knowthis" char 更改“m”
abnt7777/知道这个不知道CAHRACTERSmRESTOFSTRING
我所知道的是第一个字符串“abnt7777/knowthis”,我也知道“abnt7777/knowthis”和 a 之间有多少个字符,更改后为 22:
abnt7777/knowthis不知道CAHRACTERSARESTOFSTRING
答案1
echo "abnt7777/knowthisDONTKNOWWICHCAHRACTERSmRESTOFSTRING" | sed 's#\(abnt7777/knowthis.\{22\}\)m#\1A#'
印刷
abnt7777/knowthisDONTKNOWWICHCAHRACTERSARESTOFSTRING
该sed
命令搜索abnt7777/knowthis
后跟 22 个字符,后跟m
.除 之外的所有字符m
都包含在 和 中\(
,\)
将其捕获为组 1。匹配的字符串将替换为组 1 ( \1
) 后跟A
。该线路的所有其他部分将保持不变。
如果您想替换文件内容中的字符串,请使用类似
sed 's#\(abnt7777/knowthis.\{22\}\)m#\1A#' inputfile > outputfile
注意:如果您的真实输入模式不是其他内容,则abnt7777/knowthis
您必须检查它是否包含sed
.
答案2
对于变量扩展,如果我理解正确的话:
foo="abnt7777/knowthisDONTKNOWWICHCAHRACTERSmRESTOFSTRING"
echo ${foo:0:39}A${foo:40}
输出:
abnt7777/knowthis 不知道的人物角色A休息弦乐 #^ 39 位置 (17 abnt7777/knowthis + 22)