【发布时间】: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
谁能解释我如何使用 sed 等 linux 功能来剪切一些字符串。 比如我有刺痛
THIS-some-string-zzz-55.xml
如何剪切“.xml”?
结果应该是这样的:
THIS-some-string-zzz-55
谢谢!
【问题讨论】:
标签: linux bash parsing sed grep
几种方法:
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 仅在字符串末尾匹配。
【讨论】:
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,您可以在其中找到我在这里使用的正向前瞻(?=*)。
【讨论】:
这应该可行:
echo "THIS-some-string-zzz-55.xml" | sed 's/\.xml$//'
【讨论】:
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 了解说明。
【讨论】: