ฉันมีชื่อไฟล์เช่นa.b.c.txt
ผมต้องการสตริงนี้จะแยกเป็น
string1=a.b.c
string2=txt
โดยทั่วไปฉันต้องการแยกชื่อไฟล์และส่วนขยาย ผมใช้cut
แต่มันแยกเป็นและa,b,c
txt
ฉันต้องการตัดสายบนตัวคั่นสุดท้าย
ใครช่วยได้บ้าง
ฉันมีชื่อไฟล์เช่นa.b.c.txt
ผมต้องการสตริงนี้จะแยกเป็น
string1=a.b.c
string2=txt
โดยทั่วไปฉันต้องการแยกชื่อไฟล์และส่วนขยาย ผมใช้cut
แต่มันแยกเป็นและa,b,c
txt
ฉันต้องการตัดสายบนตัวคั่นสุดท้าย
ใครช่วยได้บ้าง
คำตอบ:
#For Filename
echo "a.b.c.txt" | rev | cut -d"." -f2- | rev
#For extension
echo "a.b.c.txt" | rev | cut -d"." -f1 | rev
มีเครื่องมือมากมายที่จะทำเช่นนี้
ในขณะที่คุณกำลังใช้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
echo "a.b.c.txt" | cut -d. -f1-3
cut
คำสั่งจะกำหนดเขต.
และจะให้ปัจจัย 4 ( a
, b
, c
, txt
) คำสั่งด้านบนจะพิมพ์ตัวคูณ 1 ถึง 3 (รวมอยู่ด้วย)
หรือ:
echo "a.b.c.txt" | cut -d -f-3
คำสั่งด้านบนจะพิมพ์ตัวประกอบ 1 ถึง 3 (รวมอยู่ด้วย)