【问题标题】:cutting part of the string切割部分字符串
【发布时间】:2011-11-14 20:47:33
【问题描述】:

谁能解释我如何使用 sed 等 linux 功能来剪切一些字符串。 比如我有刺痛

THIS-some-string-zzz-55.xml

如何剪切“.xml”?

结果应该是这样的:

THIS-some-string-zzz-55

谢谢!

【问题讨论】:

    标签: linux bash parsing sed grep


    【解决方案1】:

    几种方法:

     basename thisfile.xml .xml
    

    basename 是它自己的可执行文件,因此您可以从 shell 脚本调用它或从 C 或脚本语言执行它。


    如果你的 shell 是 bash:

    FILE=filename.xml
    echo “filename: ${file%.*}”
    echo “extension: ${file##*.}”
    


    ..最后是 sed

    echo "filename.xml" | sed 's/\.xml$//'
    

    sed 中正则表达式中的 '$' 将使 .xml 仅在字符串末尾匹配。

    【讨论】:

      【解决方案2】:

      Grep时间

      $> echo THIS-some-string-zzz-55.xml | grep -o -P "(.*)(?=\.xml)"
      THIS-some-string-zzz-55
      

      Grep 有一个神奇的 -P 标志

         -P, --perl-regexp
                Interpret PATTERN as a Perl regular expression.   This  is  highly
                experimental and grep -P may warn of unimplemented features.
      

      顺便说一句,这是一个有用的table,您可以在其中找到我在这里使用的正向前瞻(?=*)。

      【讨论】:

        【解决方案3】:

        这应该可行:

        echo "THIS-some-string-zzz-55.xml" | sed 's/\.xml$//'
        

        【讨论】:

          【解决方案4】:

          Bash 算作 Linux 功能吗?

          如果是这样,这可能对你有用:

          # string="THIS-some-string-zzz-55.xml"
          # echo ${string%.xml}
          THIS-some-string-zzz-55
          

          或者在这种情况下:

          # echo ${string%.*}
          THIS-some-string-zzz-55
          

          请参阅here 了解说明。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-09-10
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-03-07
            • 1970-01-01
            相关资源
            最近更新 更多