Regex 我如何为这场比赛制作正则表达式

Regex 我如何为这场比赛制作正则表达式,regex,sed,Regex,Sed,我正在使用这个正则表达式,对此已经有一段时间了,我决定在这里问它: 我该如何转向: bin->/system/bin 到 /系统/垃圾箱 使用sed a、 k.a移除箭头并将其后面的文本置于前面 我尝试了s/->.*/^/g,但没有成功。命令将第一个->.*/^/g与行的其余部分匹配,并将匹配项替换为^g标志在这里是多余的 由于您的字符串中只有一个->,使用awk,它变得简单得多: awk -F'->' '{print $2" "$1}' file awk -F'[[:space:

我正在使用这个正则表达式,对此已经有一段时间了,我决定在这里问它:

我该如何转向:

bin->/system/bin


/系统/垃圾箱

使用sed

a、 k.a移除箭头并将其后面的文本置于前面


我尝试了
s/->.*/^/g
,但没有成功。

命令将第一个
->.*/^/g
与行的其余部分匹配,并将匹配项替换为
^
<代码>g标志在这里是多余的

由于您的字符串中只有一个
->
,使用
awk
,它变得简单得多:

awk -F'->' '{print $2" "$1}' file
awk -F'[[:space:]]*->[[:space:]]*' '{print $2" "$1}' file
-F'->'
将字段分隔符设置为
->
[[:space:]]*->[:space:]*
将包括其前后的任何空格),您需要按相反顺序打印两个字段值

使用代码> SED,可以考虑像

这样的解决方案
sed 's/\(.*\) -> \(.*\)/\2 \1/' file

在这里,
\(.*)->\(.*)
将匹配并捕获
->
之前的任何数量的字符到组1,然后
->
将匹配
->
,最后一个
\(.*)
将匹配并捕获任何数量的字符到组2。
\2\1
替换将交换两个组值。

欢迎使用堆栈溢出。这也是一个面向专业和热情程序员的问答页面。在问题中添加您自己的代码。你至少要展示你自己在解决这个问题上所做的研究。而且,差不多90%的SED问题,你考虑过<代码> AWK < /代码>吗?在这里,您可能更容易使用
->
separatorOk将字段拆分为多个字段。我试过
s/->./^/g
,但确实有效。我真的不太懂正则表达式。@WiktorStribiżew如何使用awk?
awk-F'->'{print$2'$1}'文件
,或
awk-F'[[:space:]*->[:space:]*'{print$2'$1}'文件