【发布时间】:2019-04-26 04:52:08
【问题描述】:
假设一个长字符串包含多个信息字段(子字符串),每个字段都括在方括号中。每个字段前面的几个字符是冒号字符。
目标是将方括号(加上方括号)中的所有字段移动到紧接在其前面的冒号字符。
$echo "foo: bar [baz] qux: quux [quix]" | sought_command
foo[baz]: bar qux[quix]: quux
我相信只有 awk 足够强大来实现这一点,但也许 sed 也可以做到这一点。
注意:
这是使用 sed 的第一次尝试:
echo "foo: bar [baz] qux: quux [quix]" | sed 's/\[*]\/\:\1\2/g'
这是使用 awk 的第一次尝试:
echo "foo: bar [baz] qux: quux [quix]" | awk -v 'RS=\]' '{print substr($1,1,length($1)-1) $3 "]: " $2}'
【问题讨论】:
-
@kvantour 感谢您提醒我,但我的帖子还没有完成编辑。
-
@tripleee 目标是将所有出现的
[any string]移到紧接其前一个冒号之前。