如何使用bash命令在字符串的2个不同字符之间剪切子字符串?
我有以下字符串,我想从第一个字符串-和第一个字符串之间切出一个子字符串.
something-123_2523123_1232+12312-more-GI2342.txt
我尝试使用如下所示的cut命令:
echo something-123_2523123_1232+12312-more-GI2342.txt | cut -d'-' -f 2
上面的输出123_2523123_1232+12312是正确的一半。该cut命令已-正确选择了第一个,但随后我需要告诉它继续,直到.并输出子字符串。我该怎么做呢?
或者如何切出第一个-和之间的子字符串.?
回答
您可以连续使用两个cut. 随着-f2-您可以选择在开始第二场的所有领域。
echo something-123_2523123_1232+12312-more-GI2342.txt | cut -d- -f2- | cut -d. -f1
或者,使用 bash 的内置参数扩展。
s=something-123_2523123_1232+12312-more-GI2342.txt
s=${s#*-}
s=${s%%.*}
echo "$s"
... 或sed或grep。还有很多方法可以做到这一点。