Score:0

วิธีลบอักขระเฉพาะออกจากไฟล์

ธง za

ฉันมีไฟล์แบบนี้

[แขก]
[AAD_987d7f2f57d2]
[เอ็มโฮป]
[SABatchงาน]
[svc-ata]
[svc-bexec]
[svc-netapp]
[ดีกาลานอส]
[บทบาท]
[สมอร์แกน]

วิธีลบ '[' และ ']' ออกจากไฟล์ เพื่อให้ได้ผลลัพธ์ตามด้านล่าง

แขก
AAD_987d7f2f57d2
โฮป
SABatchJobs
svc-ata
svc-bexec
svc-netapp
เดกาลาโนส
สวมบทบาท
สมอร์แกน
Score:2
ธง hr

ยูทิลิตี 'มาตรฐาน' เพื่อลบอักขระเฉพาะคือ :

ชื่อ
       tr - แปลหรือลบอักขระ

เรื่องย่อ
       tr [ตัวเลือก]... SET1 [SET2]

คำอธิบาย
       แปล บีบ และ/หรือลบอักขระจากอินพุตมาตรฐาน เขียนâ
       อิงกับเอาต์พุตมาตรฐาน

ตัวอย่างเช่น

tr -d '][' < ไฟล์

ซึ่งแตกต่างจาก GNU sed tr อ่านและเขียนไปยังสตรีมมาตรฐานเท่านั้น อย่างไรก็ตาม คุณสามารถจำลองการแก้ไข "ในสถานที่" โดยใช้ไฟล์ชั่วคราว:

tmpfile=$(mktemp)
tr -d '][' < ไฟล์ > "$tmpfile" && mv "$tmpfile" ไฟล์

หรือกับ ฟองน้ำ คำสั่งจากแพ็คเกจ เพิ่มเติม:

tr -d '][' <ไฟล์ | ไฟล์ฟองน้ำ

คุณสามารถใช้ อึดอัด - เช่น แยกบรรทัดของไฟล์ออกเป็น เขตข้อมูล คั่นด้วย ] และ [ และพิมพ์ครั้งที่สองเท่านั้น:

awk -F '[][]' '{print $2}' ไฟล์

คุณสามารถใช้เคล็ดลับ tmpfile เดียวกันเพื่อจำลองการแก้ไข "ในสถานที่" หรือด้วย GNU awk (หรือที่เรียกว่า gawk) ให้ใช้ ในสถานที่ โมดูล:

gawk -i inplace -F '[][]' ไฟล์ '{print $2}'
Score:2
ธง in

ใช้ เสด:

sed 's/[][]//g' ไฟล์
  • เดอะ เสด คำสั่งคือ s/รูปแบบ/การแทนที่/การปรับเปลี่ยน, หมายถึงรูปแบบการแทนที่ด้วยการแทนที่. กรัม ตัวดัดแปลงหมายถึง กรัมในทางโลก มิฉะนั้น เฉพาะนัดแรกเท่านั้นที่จะถูกแทนที่
  • [...] เป็นคลาสของอักขระ ดังนั้นอักขระใดๆ ในวงเล็บจึงตรงกัน
  • ] ปิดคลาสอักขระเว้นแต่ว่าจะเป็นที่แรกภายในเนื่องจากเราต้องการรวมไว้ในคลาสตัวละครของเรา เราจึงวางไว้ก่อน
  • การเปลี่ยนว่างเปล่าในกรณีของเรา
  • ใช้ sed -i '...' เพื่อแก้ไขไฟล์ของคุณ

คุณยังสามารถใช้ grep -P เหมือนที่ผมได้แนะนำไปในของคุณแล้ว คำถามอื่น ๆ:

grep -Po '\[\K[^]]*' ไฟล์
Lorenz Keel avatar
gr flag
ฉันพร้อมที่จะแนะนำ `sed 's/\[\(.*\)\]/\1/' file` แต่คำตอบของคุณสามารถอ่านได้และสวยงามกว่าของฉัน :-)
Lorenz Keel avatar
gr flag
@tcprks หากคุณสนใจที่จะใช้การแก้ไขโดยตรงกับไฟล์ (เช่นเขียนทับ) คุณสามารถเพิ่ม `-i` ก่อน `file` (นี่เป็นเรื่องจริงสำหรับส่วน `sed` ของโซลูชันเท่านั้น
pLumo avatar
in flag
ขอบคุณ เพิ่มคำแนะนำนั้นในบันทึกของฉัน :-)

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา