使用 sed 切换字符串中的字符

使用 sed 切换字符串中的字符

如何使用 切换字符串中的字符sed?假设我们有一个数字12345678,我想交换第二个和第四个数字(即数字 = 14325678)。

答案1

用括号对表达式的各个部分进行分组,然后使用其中的组索引以不同的顺序调用这些\nn。例如

$ 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。

相关内容