有人可以解释一下如何使用sed等linux特性来切割一些字符串。 比如我有刺痛切割部分字符串
THIS-some-string-zzz-55.xml
如何削减 “.XML”?
结果应该是这样的:
THIS-some-string-zzz-55
谢谢!
有人可以解释一下如何使用sed等linux特性来切割一些字符串。 比如我有刺痛切割部分字符串
THIS-some-string-zzz-55.xml
如何削减 “.XML”?
结果应该是这样的:
THIS-some-string-zzz-55
谢谢!
这应该工作:
echo "THIS-some-string-zzz-55.xml" | sed 's/\.xml$//'
几个方法:
basename thisfile.xml .xml
基本名称是它自己的可执行文件,这样你就可以从一个shell脚本调用,或从C或脚本语言Exec的它。
如果你的shell是bash:
FILE=filename.xml
echo “filename: ${file%.*}”
echo “extension: ${file##*.}”
与 ..和最后的sed
echo "filename.xml" | sed 's/\.xml$//'
这 '$' 在sed的常规expressin将使.XML比赛只在字符串的末尾。
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,在这里你可以找到正向前查找(?=*)
,那我在这里使用。
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的说明。
-1无解释回复发帖 –