我有替代问题.我有一个带有1行随机字符的文件,括号"{}"大约1个字符.我想在前一个字符或下一个字符上移动这些括号.(如果角色线仍然不变,我知道该怎么做.)但我不知道如何在不知道这些字符的情况下这样做,我不知道这些括号在哪里.
例如:"ABC123 {X} CBA321"==>"ABC12 {3} XCBA321"或"ABC123X {C} BA321"
我想使用awk或sed,一些正则表达式,也许......
向后移动一个字符:
sed -e 's/\(.\){\(.\)}/{\1}\2/g' file
向前移动一个字符:
sed -e 's/{\(.\)}\(.\)/\1{\2}/g' file
要就地修改文件,请使用-i
标志:
sed -i -e 's/\(.\){\(.\)}/{\1}\2/g' file sed -i -e 's/{\(.\)}\(.\)/\1{\2}/g' file
第一个示例通过匹配任何字符后跟包围的字符来工作{}
.没有分组,这是:.{.}
我们添加分组,以便我们可以将两个字符放在输出中.而不是{}
用第一个字符环绕第二个字符.这是{\1}\2
.
第二个示例的工作方式类似,但{.}.
首先匹配然后输出\1{\2}
.