如何用sed和多个定界符交换两个单词?

Uninnu

单词中只接受字母,其他任何字符都是定界符。我想将第一个单词与第三个单词交换。

sed -E 's/([A-Za-z]+) [^A-Za-z] ([A-Za-z]+) [^A-Za-z] ([A-Za-z]+)/\3 \2 \1/' filename

我写了这个,但是不能正常工作

例子:

I 4want5to%change

我想将此字符串更改为:

to 4want5I%change

任何的想法?

血红素

使用字符类[[:alpha:]]来匹配大写和小写,以及使用否定[^[:alpha:]]来匹配所有其他字符

sed -r 's/^([^[:alpha:]]*)([[:alpha:]]+)([^[:alpha:]]+[[:alpha:]]+[^[:alpha:]]+)([[:alpha:]]+)([^[:alpha:]]*)/\1\4\3\2\5/' file.txt

例子:

$ sed -r 's/^([^[:alpha:]]*)([[:alpha:]]+)([^[:alpha:]]+[[:alpha:]]+[^[:alpha:]]+)([[:alpha:]]+)([^[:alpha:]]*)/\1\4\3\2\5/' <<<'I 4want5to%change'
to 4want5I%change

$ sed -r 's/^([^[:alpha:]]*)([[:alpha:]]+)([^[:alpha:]]+[[:alpha:]]+[^[:alpha:]]+)([[:alpha:]]+)([^[:alpha:]]*)/\1\4\3\2\5/' <<<'4I 4want5to%change'
4to 4want5I%change

$ sed -r 's/^([^[:alpha:]]*)([[:alpha:]]+)([^[:alpha:]]+[[:alpha:]]+[^[:alpha:]]+)([[:alpha:]]+)([^[:alpha:]]*)/\1\4\3\2\5/' <<<'Spring&summer^winter'
winter&summer^Spring

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何用两个定界符分割字符串?

如何清除两个外部定界符之间的内部定界符

如何删除两个定界符之间的字符?

Python Regex:两个定界符之间的单词-用标点符号替换前导定界符,但删除结尾的定界符

如何使单词/字符串的唯一部分带有两个定界符?

您如何仅通过最后两个定界符对列进行定界?

将cut / awk / sed与两个不同的定界符一起使用

用Python中的多个定界符将一个列分成两个

如何用两个定界符分割一个字符串并只保留其中一个?

提取两个相同定界符(多实例定界符)之间的行

Java扫描器-两个定界符和异常

R在保留两个定界符之前(和之后)strsplit

如何将一个句子的字符串分隔为定界符(两个单词之间有空格)?

awk删除文本并分割两个定界符

使用两个不同的定界符读取CSV

具有两个定界符的csv

在两个定界符之间查找文本

麻烦在awk中的两个定界符

在一行上的两个定界符之间(包括两个定界符)打印文本

如何使用Python 2.7在两个定界符内查找值

如何在bash中使用定界符逐行合并两个文件

如何在两个定界符之间提取字符串

存在字符串时如何在两个定界符之间提取文本

如何使用Unix在两个相邻的定界符之间插入空格字符?

vba中的多个定界符(单词)

如何用定界符划分输出?

如何用定界符分割列

两个相同或不同定界符之间的子字符串(当定界符出现多次时)

最好的方法是用两个不同的定界符来分割字符串,将两个词都大写(仅包含一个定界符,然后再添加两个定界符)?