sed-从字符串中删除特定下标

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 oneliner,它提供以下输出: sdc3 sdc2 输入: sdc3[1]sdc2[0]

我的意思是从字符串中删除所有下标值

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
    标志告诉它每行执行多个匹配,而不是在第一行停止

谢谢!帮助..能否在字符串之前添加/dev:类似于/dev/sdc3/dev/sdc2的内容谢谢!帮助..能否在字符串之前添加/dev:类似于/dev/sdc3/dev/sdc2的内容