sed-从字符串中删除特定下标
请向我提供一个sed oneliner,它提供以下输出: sdc3 sdc2 输入: sdc3[1]sdc2[0] 我的意思是从字符串中删除所有下标值sed-从字符串中删除特定下标,sed,shell,Sed,Shell,请向我提供一个sed oneliner,它提供以下输出: sdc3 sdc2 输入: sdc3[1]sdc2[0] 我的意思是从字符串中删除所有下标值 sed 's/\[[^]]*\]//g' 读取:用文本“[”替换任何字符串,后跟零个或多个非“]”字符,然后用空字符串替换结尾“]” 您需要[^]]位来防止贪婪匹配将“[1]sdc2[0]”视为示例字符串中的单个匹配 关于你的评论: sed 's#\([^[ ]*\)\[[^]]*\]#/dev/\1#g' 我将分隔符从通常的“/”切换到
sed 's/\[[^]]*\]//g'
读取:用文本“[”替换任何字符串,后跟零个或多个非“]”字符,然后用空字符串替换结尾“]”
您需要[^]]
位来防止贪婪匹配将“[1]sdc2[0]”视为示例字符串中的单个匹配
关于你的评论:
sed 's#\([^[ ]*\)\[[^]]*\]#/dev/\1#g'
- 我将分隔符从通常的“/”切换到“#”,只是为了避免逃避您要求的
位(为了清楚起见,我不会说“为了清楚”)/dev/
位匹配一个子组,这里是sdc2或其他,因此我们可以在替换中引用它\(…\)
- 子组使用的字符类与我们丢弃索引时使用的字符类类似:
表示除“[(同样,为了避免与索引完全匹配)或空格以外的任何字符(假设您的值是根据帖子以空格分隔的)[^[]
- 替换现在是文本“/dev/”后跟第一个(也是唯一一个)子组匹配
- 末尾的
标志告诉它每行执行多个匹配,而不是在第一行停止g
[^]]
位来防止贪婪匹配将“[1]sdc2[0]”视为示例字符串中的单个匹配
关于你的评论:
sed 's#\([^[ ]*\)\[[^]]*\]#/dev/\1#g'
- 我将分隔符从通常的“/”切换到“#”,只是为了避免逃避您要求的
位(为了清楚起见,我不会说“为了清楚”)/dev/
位匹配一个子组,这里是sdc2或其他,因此我们可以在替换中引用它\(…\)
- 子组使用的字符类与我们丢弃索引时使用的字符类类似:
表示除“[(同样,为了避免与索引完全匹配)或空格以外的任何字符(假设您的值是根据帖子以空格分隔的)[^[]
- 替换现在是文本“/dev/”后跟第一个(也是唯一一个)子组匹配
- 末尾的
标志告诉它每行执行多个匹配,而不是在第一行停止g