在文件终端命令中交换 2 个字符串

在文件终端命令中交换 2 个字符串

我想交换文件中的两个字符串

以下是示例

[ link ]( text ) 

我想做到

[ text ]( link )

我该怎么做?我尝试了一下,但做不到

链接 =http://something.com等文本可以是任何内容

答案1

$ echo "[ link ]( text )" | perl -pe 's/\[(.*?)\]\((.*?)\)/[$2]($1)/g'
[ text ]( link )

答案2

在 bash 中,假设括号和空格是固定的,这样做可以实现这一点:

a=$(echo "[ link ]( text )" | cut -d ' ' -f 4) ; b=$(echo "[ link ]( text )" | cut -d ' ' -f 2) ; echo "[ $a ]( $b )"

您可以将其缩短,但希望这种方式能够清楚地说明其工作原理。如果您希望将其作为脚本,请将输入文本替换为“$1”。

要从文件输入read则使用。

相关内容