web-dev-qa-db-ja.com

最後の区切り文字で文字列をカット

a.b.c.txtのようなファイル名を持っているので、この文字列を次のように分割したい

string1=a.b.c
string2=txt

基本的に、ファイル名とその拡張子を分割したいと思います。 cutを使用しましたが、a,b,ctxtに分割されます。最後の区切り文字の文字列をカットしたい。

誰か助けてもらえますか?

14
 #For Filename
 echo "a.b.c.txt" | rev | cut -d"." -f2-  | rev
 #For extension
 echo "a.b.c.txt" | rev | cut -d"." -f1  | rev
26
7171u

これを行うための多くのツールがあります。

cutを使用していたので、

$ string1="$(cut -d. -f1-3 <<<'a.b.c.txt')"
$ string2="$(cut -d. -f4 <<<'a.b.c.txt')"
$ echo "$string1"
a.b.c
$ echo "$string2"
txt

私はパラメータ拡張を使用したでしょう(シェルがサポートしている場合):

$ name='a.b.c.txt'
$ string1="${name%.*}"
$ string2="${name##*.}"
$ echo "$string1"
a.b.c
$ echo "$string2"
txt
15
heemayl
echo "a.b.c.txt" | cut -d. -f1-3

cutコマンドは.を区切り、4つの要素(abctxt)を提供します。上記のコマンドは、因子1から3(含まれている)を出力します。

または:

echo "a.b.c.txt" | cut -d -f-3

上記のコマンドは、因子1を3(含まれる)まで出力します。

0
Rohit Chaudhari