ฉันมีไฟล์ที่มีเนื้อหาเช่นนี้:
apple
b\all
cat
\34
egg
ฉันต้องการลบบรรทัดทั้งหมดที่มีแบ็กสแลช ฉันพยายามใช้
sed '/\/d' pdataf.txt
แต่มันไม่ทำงาน ฉันควรลองทำอะไร
ฉันมีไฟล์ที่มีเนื้อหาเช่นนี้:
apple
b\all
cat
\34
egg
ฉันต้องการลบบรรทัดทั้งหมดที่มีแบ็กสแลช ฉันพยายามใช้
sed '/\/d' pdataf.txt
แต่มันไม่ทำงาน ฉันควรลองทำอะไร
คำตอบ:
คุณเพียงแค่ต้องหลบหนีแบ็กสแลช (ยกเว้นการหลบหนี!)
$ sed '/\\/d' pdataf.txt
apple
cat
egg
grep
พิมพ์ทุกบรรทัดที่ไม่มี\
:
grep -v '\\' pdataf.txt
ในทำนองเดียวกันawk
:
awk '!/\\/' pdataf.txt
คุณต้องหลีกเลี่ยงแบ็กสแลช (อักขระเลี่ยง) เพื่อแทนที่ และหากรุ่นของคุณรองรับมันตัวเลือก -i (แบบแทน) จะทำการแก้ไขในไฟล์ของคุณโดยที่คุณไม่ต้องให้ไฟล์ระดับกลาง นอกจากนี้หากคุณใช้ตัวเลือก -i โปรดทราบว่ามันยอมรับนามสกุลไฟล์สำรอง (แนะนำ!) อย่างไรก็ตามหากคุณไม่ได้ระบุไว้จะมีประโยชน์ในการนำหน้าคำสั่ง sed ของคุณด้วย -e เพื่อแจ้งให้ทราบว่าคุณไม่ได้ใช้ นามสกุลไฟล์สำรอง
วางมันทั้งหมดเข้าด้วยกัน:
# Run sed to remove lines with backslash in them
$ sed -i -e '/\\/d' pdataf.txt
# Cat your file to confirm edits
$ cat pdataf.txt
apple
cat
egg