请提供一个提供此输出的sed oneliner: sdc3 sdc2 输入: sdc3 [1] sdc2 [0]
我的意思是从字符串中删除所有下标值..
答案 0 :(得分:4)
sed 's/\[[^]]*\]//g'
读取:用字面“[”后跟零个或多个不是“]”的字符替换任何字符串,然后用空字符串替换结束“]”。
您需要[^]]
位来防止贪婪匹配将“[1] sdc2 [0]”视为示例字符串中的单个匹配。
至于你的评论:
sed 's#\([^[ ]*\)\[[^]]*\]#/dev/\1#g'
/dev/
位(我不会说“为了清晰”)\(...\)
位匹配一个子组,这里是sdc2或其他什么,所以我们可以在替换中引用它[^[ ]
表示除了“[”(再次,为了避免贪婪地匹配索引)或空格(假设您的值是根据你的帖子以空格分隔)g
标志告诉它每行执行多个匹配,而不是在第一个停止