如何使用 bash 命令在字符串的 2 个不同字符之间剪切子字符串?
How to cut a substring between 2 different characters of a string using a bash command?
我有以下字符串,我想从第一个 -
和 .
之间删除一个子字符串
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-
您可以 select 从第二个字段开始的所有字段。
echo something-123_2523123_1232+12312-more-GI2342.txt | cut -d- -f2- | cut -d. -f1
或者,使用 bash 的内置 parameter expansion。
s=something-123_2523123_1232+12312-more-GI2342.txt
s=${s#*-}
s=${s%%.*}
echo "$s"
...或sed
或grep
。还有很多方法可以做到这一点。
我有以下字符串,我想从第一个 -
和 .
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-
您可以 select 从第二个字段开始的所有字段。
echo something-123_2523123_1232+12312-more-GI2342.txt | cut -d- -f2- | cut -d. -f1
或者,使用 bash 的内置 parameter expansion。
s=something-123_2523123_1232+12312-more-GI2342.txt
s=${s#*-}
s=${s%%.*}
echo "$s"
...或sed
或grep
。还有很多方法可以做到这一点。