ฉันจะลบบรรทัดที่ขึ้นต้นด้วย a ได้อย่างไร #
ที่ระบุว่าจะมีช่องว่างด้านซ้ายและด้านขวาของ#
?
# Master socket provides access to userdb information. It's typically
ฉันจะลบบรรทัดที่ขึ้นต้นด้วย a ได้อย่างไร #
ที่ระบุว่าจะมีช่องว่างด้านซ้ายและด้านขวาของ#
?
# Master socket provides access to userdb information. It's typically
คำตอบ:
ดูเหมือนว่าจะใช้งานได้ แต่ฉันไม่ได้คิดมาก:
sed -e '/^[[:space:]]*#/d'
คุณสามารถใช้grep
สำหรับการที่
grep -vh '^[[:space:]]*#' filename
เนื่องจากเมื่อฉันเข้าใจว่าคุณกำลังลอกความคิดเห็นจากไฟล์บางไฟล์คุณอาจลองลบบรรทัดว่างออกซึ่งขยายด้านบนเป็น:
grep -vh '^[[:space:]]*\(#\|$\)' filename
awk
วิธีแก้ไขคือคว่ำการจับคู่รูปแบบของคุณ
$> cat ./text
elephant
# Master socket provides access to userdb information. It's typically
zoo
#ok
penguin
# !
$> awk '!/^(\ )*#/ {print $0}' ./text
elephant
zoo
penguin
awk '/^ *#/{next}1' file
ควรจะดีพอ
perl -ne 'print if ! /^\s*#/' ./text
ใช้ข้อมูลตัวอย่างที่โพสต์โดยДМИТРИЙМАЛИКОВ ...
$ grep -vPh '^\s*#' filename.txt | grep -Po '\w+'
elephant
zoo
penguin
ฉันชอบใช้ pcre กับ grep ดังนั้นฉันจึงใช้สวิตช์ -P สำหรับ grep (ต้องเป็น GNU grep) grep ตัวที่สองเป็นน้ำตาลบริสุทธิ์เพื่อให้คุณได้คำที่ไม่มีช่องว่าง นอกจากนี้ยังจะ "ลบ" บรรทัดว่าง
awk '!/^ *#/' ./text
ไม่จำเป็นที่จะหลบหนีอักขระช่องว่างที่ไม่มีความจำเป็นที่จะจับตัวอักษรพื้นที่ที่ไม่จำเป็นต้องระบุการกระทำเริ่มต้น: