คำถามติดแท็ก string

การจัดการสตริง: การแยกส่วนของสตริงการแทนที่ข้อความการจัดรูปแบบความกว้างที่กำหนดเป็นต้น

8
ฉันจะทดสอบได้อย่างไรว่าตัวแปรว่างเปล่าหรือมีช่องว่างเท่านั้น?
ไวยากรณ์ bash ต่อไปนี้ตรวจสอบว่าparamไม่ว่างเปล่า: [[ ! -z $param ]] ตัวอย่างเช่น: param="" [[ ! -z $param ]] && echo "I am not zero" ไม่มีการส่งออกและปรับ แต่เมื่อparamว่างเปล่ายกเว้นอักขระเว้นวรรคหนึ่งตัว (ขึ้นไป) เคสจะแตกต่างกัน: param=" " # one space [[ ! -z $param ]] && echo "I am not zero" เอาท์พุท "ฉันไม่ได้เป็นศูนย์" ฉันจะเปลี่ยนการทดสอบเพื่อพิจารณาตัวแปรที่มีอักขระเว้นวรรคว่างเปล่าได้อย่างไร

21
จะสร้างสตริงแบบสุ่มได้อย่างไร
ฉันต้องการสร้างสตริงแบบสุ่ม (เช่นรหัสผ่านชื่อผู้ใช้ ฯลฯ ) มันเป็นไปได้ที่จะระบุความยาวที่ต้องการ (เช่น 13 ตัวอักษร) ฉันสามารถใช้เครื่องมืออะไรได้บ้าง (เพื่อเหตุผลด้านความปลอดภัยและความเป็นส่วนตัวขอแนะนำให้สร้างสตริงแบบออฟไลน์ซึ่งตรงข้ามกับออนไลน์บนเว็บไซต์)
209 password  string  random 

13
ลบอักขระตัวสุดท้ายของสตริงโดยใช้การจัดการสตริงในเชลล์สคริปต์
ฉันต้องการลบอักขระตัวสุดท้ายของสตริงฉันลองใช้สคริปต์ตัวน้อยนี้: #! /bin/sh t="lkj" t=${t:-2} echo $t แต่มันพิมพ์ "lkj" สิ่งที่ฉันทำผิด?

5
จะเป็นตัวพิมพ์ใหญ่ของอาร์กิวเมนต์บรรทัดคำสั่งได้อย่างไร
ฉันค้นหาดังนั้นและพบว่าการใช้ตัวพิมพ์ใหญ่สตริงต่อไปนี้จะใช้งานได้ str="Some string" echo ${str^^} แต่ฉันพยายามทำสิ่งที่คล้ายกันในอาร์กิวเมนต์บรรทัดคำสั่งซึ่งทำให้ฉันมีข้อผิดพลาดดังต่อไปนี้ พยายาม #!/bin/bash ## Output echo ${1^^} ## line 3: ${1^^}: bad substitution echo {$1^^} ## No error, but output was still smaller case i.e. no effect เราจะทำสิ่งนี้ได้อย่างไร


9
bash - แทนที่ช่องว่างด้วยบรรทัดใหม่
ฉันจะแทนที่ช่องว่างด้วยบรรทัดใหม่ในอินพุตเช่น: /path/to/file /path/to/file2 /path/to/file3 /path/to/file4 /path/to/file5 ฯลฯ ... เพื่อรับสิ่งต่อไปนี้: /path/to/file /path/to/file2 /path/to/file3 /path/to/file4 /path/to/file5 บันทึก ฉันโพสต์คำถามนี้เพื่อช่วยผู้ใช้รายอื่นมันไม่ง่ายเลยที่จะหาคำตอบที่มีประโยชน์ใน UNIX SE จนกว่าฉันจะเริ่มพิมพ์คำถามนี้ หลังจากนั้นฉันพบสิ่งต่อไปนี้: คำถามที่เกี่ยวข้อง ฉันจะค้นหาและแทนที่ด้วยบรรทัดใหม่ได้อย่างไร

2
grep กับตัวแปร
สมมติว่าฉันมีตัวแปร line="This is where we select from a table." ตอนนี้ฉันต้องการ grep เลือกกี่ครั้งเกิดขึ้นในประโยค grep -ci "select" $line ฉันลองมัน แต่มันใช้งานไม่ได้ ฉันก็ลอง grep -ci "select" "$line" มันยังไม่ทำงาน ฉันได้รับข้อผิดพลาดดังต่อไปนี้ grep: This is where we select from a table.: No such file or directory
58 shell  grep  string 

5
การแยกสตริงโดยการเกิดขึ้นครั้งแรกของตัวคั่น
ฉันมีสตริงในรูปแบบถัดไป id;some text here with possible ; inside และต้องการที่จะแยกมันถึง 2 ;สายโดยเกิดขึ้นครั้งแรกของ ดังนั้นควร: idและsome text here with possible ; inside ฉันรู้วิธีแยกสตริง (ตัวอย่างเช่นด้วยcut -d ';' -f1) แต่มันจะแยกส่วนเพิ่มเติมเนื่องจากฉันมี;อยู่ในส่วนด้านซ้าย

7
วิธีรับคำแรกของสตริง
เมื่อฉัน'echo *' ได้รับผลลัพธ์ต่อไปนี้: file1 file2 file3 ... สิ่งที่ฉันต้องการคือการเลือกคำแรก ฉันจะดำเนินการต่อได้อย่างไร
43 bash  string 

3
ทดสอบว่าสตริงมีสตริงย่อยหรือไม่
ฉันมีรหัส file="JetConst_reco_allconst_4j2t.png" if [[ $file == *_gen_* ]]; then echo "True" else echo "False" fi ฉันทดสอบว่าfileมี "gen" หรือไม่ ผลลัพธ์คือ "เท็จ" ดี! ปัญหาคือเมื่อฉันแทนที่ "gen" ด้วยตัวแปรtestseq: file="JetConst_reco_allconst_4j2t.png" testseq="gen" if [[ $file == *_$testseq_* ]]; then echo "True" else echo "False" fi ตอนนี้เอาต์พุตคือ "True" มันจะเป็นอย่างไร จะแก้ไขปัญหาได้อย่างไร



1
ทำไมคำสั่ง strings จะไม่หยุด?
stringsพฤติกรรมคำสั่งวิจิตรพิสดารเห็นได้ชัดว่ามันไม่ได้หยุดเขียนไปยังแฟ้มแม้ว่าไดรฟ์วิ่งออกไปจากพื้นที่ หรือบางทีฉันหายไปบางอย่าง ฉันเรียกใช้ต่อไปนี้: # strings /dev/urandom > random.txt สิ่งนี้ยังคงทำงานต่อไปและไม่หยุดแม้หลังจากเติมดิสก์ (แฟลช usb ทั่วไป) ถ้าอย่างนั้นฉันจะสร้าง ramdisk ให้เร็วขึ้นและลองคำสั่งเดิมอีกครั้ง มันยังไม่หยุด ฉันเข้าใจว่าurandomไม่ใช่ไฟล์ปกติและstringsเอาต์พุตของยังถูกเปลี่ยนเส้นทางอย่างไรก็ตามในทั้งสองกรณีข้างต้นcatคำสั่งรายงานข้อผิดพลาดเมื่อไม่มีที่ว่าง # cat /dev/urandom > random.txt cat: write error: No space left on device นี่เป็นพฤติกรรมปกติของสตริงหรือไม่ ถ้าเป็นเช่นนั้นทำไม ข้อมูลจะถูกเขียนที่ไหนหลังจากไม่มีพื้นที่เหลืออีกแล้ว?
30 linux  shell  string 

2
ตรวจสอบความยาวของตัวแปร
ฉันจะตรวจสอบความยาวของตัวแปรที่อ่าน (สคริปต์ของฉันใส่ตัวอักษรได้ไม่เกินห้าตัว) ฉันคิดถึงสิ่งนี้: #!/bin/bash read string check=${#string} echo $check if [ $check -ge 5 ]; then echo "error" ; exit else echo "done" fi จะมีทางออกที่ "สง่างาม" มากขึ้น?
27 bash  shell  string 

7
วิธีตรวจสอบว่า $ PWD เป็นไดเรกทอรีย่อยของเส้นทางที่กำหนดหรือไม่
เช่นตรวจสอบว่า$PWDเป็นไดเรกทอรีย่อยของ / home ในคำอื่น ๆ ที่ฉันกำลังค้นหาการดำเนินการสตริงทุบตีเพื่อตรวจสอบว่าหนึ่งสตริงเริ่มต้นด้วยอีก
25 bash  shell  directory  string 

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