Linux 如何在shell脚本中交换单词?
这是我的输入行Linux 如何在shell脚本中交换单词?,linux,shell,sed,Linux,Shell,Sed,这是我的输入行 [[ref:start |其他配置文件、程序和脚本]] 我需要将上面的行转换为 “其他配置文件、程序和脚本”:ref/start 如何使用sed命令转换此文件?写起来比读起来容易:) 我建议你读书也要读书。它没有那么大,你实际上不需要一次读完它。在大多数情况下,了解s///命令、正则表达式语法和sed标志(最有用的是-n和-i)就足够了。嗨,你能解释一下为什么我们需要部分[^:]*和[^ |]*?[^:]匹配一个不是冒号(或换行符)的字符吗和*匹配零个或多个,总是尽可能多。因此,
[[ref:start |其他配置文件、程序和脚本]]
我需要将上面的行转换为“其他配置文件、程序和脚本”:ref/start
如何使用sed命令转换此文件?写起来比读起来容易:)
我建议你读书也要读书。它没有那么大,你实际上不需要一次读完它。在大多数情况下,了解
s///
命令、正则表达式语法和sed标志(最有用的是-n
和-i
)就足够了。嗨,你能解释一下为什么我们需要部分[^:]*和[^ |]*?[^:]
匹配一个不是冒号(或换行符)的字符吗和*
匹配零个或多个,总是尽可能多。因此,[^::::]*
匹配到冒号分隔符之前。类似地,[^ |]*
匹配到管道分隔符之前。如果在同一输入行上可能有多个表达式,则也应防止匹配超过右方括号,并添加一个/g
选项<代码>sed的%\[\[\([^]:]*\):\([^]\]*\)\\([^]*\)\]\]\]%“\3”:\1/\2%g'
$ echo "[[ref:start|Other config files, programs, and scripts]]" |\
sed 's/\[\[\([^:]*\):\([^|]*\)|\(.*\)\]\]/"\3":\1\/\2/'
"Other config files, programs, and scripts":ref/start