例如:我有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)