挣扎于此可能有人有想法
我只想覆盖原始字符串上给定输出的字符数量,但保持其余部分不变
示例 原始字符串
00000000000000000000000000000000000
新字符串
sometexthere00000000000000000000000
看了很多种方式,但所有似乎都取代整行或寻找匹配的某些字符串
答案 0 :(得分:2)
Sed
会非常有帮助。
例如,您想要用sometexthere
替换前12个字符,您可以编写
>>> echo 0000000000000000000000000000000000 | sed -E 's/^.{12}/sometexthere/'
sometexthere0000000000000000000000
它的作用是什么?
^
将正则表达式锚定在字符串的开头
.{12}
.
匹配任何内容,与{12}
相匹配,匹配12个字符。
您也可以使用参数替换,例如
$ echo ${val/00000/hello}
hello000000000000000000000000000000
答案 1 :(得分:0)
您可以在正则表达式中使用.
来匹配任何字符(仅一次)和^
以匹配行的开头。
不知道文件的确切格式等,这里是一个使用sed编辑echo输出的字符串的例子:
echo "00000000000000000000000000000000000" | sed 's/^.........../aaaaaaaaaaaa/'
答案 2 :(得分:0)
完整的bash解决方案:
#!/bin/bash
# original="abcdefghijklmnopqrstuvwxyz0123456789"
original="00000000000000000000000000000000000"
overwrite="sometexthere"
modified=${overwrite}${original:${#overwrite}} # append overwrite with substring of original from overwrite's length to the end
echo ${modified}