如何使用 切换字符串中的字符sed
?假设我们有一个数字12345678
,我想交换第二个和第四个数字(即数字 = 14325678
)。
答案1
用括号对表达式的各个部分进行分组,然后使用其中的组索引以不同的顺序调用这些\n
组n
。例如
$ echo 12345678 | sed -E 's/(.)(.)(.)(.)/\1\4\3\2/'
14325678
答案2
您可以通过多种方式做到这一点:
echo 12345678 |
sed -e '
s/./&\n/4
s/./\n&/2
s/\n\(.\)\(.*\)\(.\)\n/\3\2\1/
'
14325678
perl -lne 'print+(unpack "AAAAA*")[0,3,2,1,4]'
perl -F -lane '@F[1,3] = @F[3,1];print @F'
awk -F "" '{t=$2;$2=$4;$4=t}1' OFS=
使用 awk,在空字符串上分割,使每个字符成为一个字段,然后将其打乱并通过 Ofs var 将它们带到标准输出。
使用 Perl,我们使用 ascii 模板解压字符串,然后重新排列顺序,最后打印到标准输出。默认 Ofs 为空。
使用 sed,首先我们标记需要翻转的字符。然后在最后一步中,我们在标记的帮助下交换它们。此方法可根据您可能想要交换的任意两个字符位置进行缩放。
HTH。