有人可以解释一下如何使用像sed这样的linux功能来剪切一些字符串。 例如,我有刺痛
THIS-some-string-zzz-55.xml
如何剪切“.xml”?
结果应该是:
THIS-some-string-zzz-55
谢谢!
答案 0 :(得分:5)
有几种方法:
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中常规expressin中的'$'将仅在字符串末尾处进行.xml匹配。
答案 1 :(得分:1)
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,您可以在这里找到我在此使用的正向前瞻(?=*)
。
答案 2 :(得分:0)
这应该有效:
echo "THIS-some-string-zzz-55.xml" | sed 's/\.xml$//'
答案 3 :(得分:0)
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了解相关信息。