如何用另一个字符串中的特定字符替换一个字符串中的特定字符?

use*_*594 4 command-line bash

例如:我有string1 = 'abcd', 和string2 = 'xwyz'

我想用 string2 ('z') 的第四个字符替换 string1 ('c') 的第三个字符。

当然,字符串索引从 0 开始。

我怎样才能做到这一点?

Rom*_*est 11

使用bash子串操作:

s1="abcd"
s2="xwyz"
s1=${s1:0:2}${s2:3}${s1:3}
Run Code Online (Sandbox Code Playgroud)
  • ${s1:0:2}- 第一个切片包含ab(直到第三个字符c

  • ${s2:3}-s2要插入的字符串的第 4 个字符

  • ${s1:3}-s1字符串的最后(第 4 个)字符


最终s1值:

echo $s1
abzd
Run Code Online (Sandbox Code Playgroud)

或者使用 GNU awk工具:

gawk -v s2=$s2 -v FPAT='[a-z]' '{$3=substr(s2,4)}1' OFS="" <<< $s1
abzd
Run Code Online (Sandbox Code Playgroud)
  • <<< $s1- 第一个字符串s1被视为输入内容

  • -v s2=$s2- 将第二个字符串s2作为变量传递给awk脚本

  • FPAT='[a-z]'- 定义字段值的正则表达式模式([a-z]- 任何字母字符)


或者,您也可以应用“空”字段分隔符,FS=""将每个字符视为单独的字段:

gawk -v s2=$s2 'BEGIN{ FS=OFS="" }{$3=substr(s2,4)}1' <<< $s1
abzd
Run Code Online (Sandbox Code Playgroud)