ตัดสตริงบนตัวคั่นล่าสุด


14

ฉันมีชื่อไฟล์เช่นa.b.c.txtผมต้องการสตริงนี้จะแยกเป็น

string1=a.b.c
string2=txt

โดยทั่วไปฉันต้องการแยกชื่อไฟล์และส่วนขยาย ผมใช้cutแต่มันแยกเป็นและa,b,c txtฉันต้องการตัดสายบนตัวคั่นสุดท้าย

ใครช่วยได้บ้าง

คำตอบ:



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
โซลูชั่นทุบตีนั้นสง่างาม
törzsmókus

ตัวตัดจะทำงานกับจำนวนคงที่เท่านั้น!
törzsmókus

0
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 (รวมอยู่ด้วย)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.