使用 Awk 识别和反转文本中的单词二元组

使用 Awk 识别和反转文本中的单词二元组

我是动漫的狂热粉丝,通常都会看有字幕的动画。有时,底层人会像西方人一样对名字进行排序,将名字放在姓氏之前。我真的不喜欢这样,但是手动浏览字幕文件只是为了颠倒名称的顺序会浪费时间。我想使用 Awk(或其他标准 Linux 实用程序,如果 Awk 不是正确的选择)来搜索文本中以大写字母开头且始终一起出现的单词(二元组),并反转它们的顺序。空格和符号应该是单词的分隔符。这应该足以导致不会出现误报。

例如, 的所有实例Miu Matsuoka都应转换为Matsuoka Miu.

答案1

尝试这个,

sed -r -e "s:([A-Z][a-z]+)\s([A-Z][a-z]+):\2 \1:g" subfile > newsubfile

或者您也可以将原始文件更改为

sed -i -r -e "s:([A-Z][a-z]+)\s([A-Z][a-z]+):\2 \1:g" subfile

正则表达式([A-Z][a-z]+)\s([A-Z][a-z]+)选择任意 2 个以大写字母开头的连续单词并sed反转它们的顺序。看看这是否符合您的所有测试用例。我进行了一些测试并且成功了。

相关内容