最後の区切り文字で文字列を切り取ります


14

のようなファイル名がありa.b.c.txt、この文字列を次のように分割したい

string1=a.b.c
string2=txt

基本的に、ファイル名とその拡張子を分割します。私が使用しcutたが、それはように分割a,b,cしてtxt。最後の区切り文字の文字列を切りたいです。

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

回答:


24
 #For Filename
 echo "a.b.c.txt" | rev | cut -d"." -f2-  | rev
 #For extension
 echo "a.b.c.txt" | rev | cut -d"." -f1  | rev

コードの美しさ!
ナムG VU

15

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

あなたが使っていたように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

1
bashソリューションはエレガントです。
törzsmókus

カット 1は、期間の固定数を持つ唯一の作業を行います!
törzsmókus

0
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(含まれる)までを出力します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.