คำสั่งสามารถย่อตัวอย่างเช่นถ้าคุณใช้ GNU sed
:
$ sed 's/^[ \t]*//;s/[ \t]*$//' < file
ตัวอย่าง
นี่คือคำสั่งข้างต้นในการดำเนินการ
$ echo -e " \t blahblah \t " | sed 's/^[ \t]*//;s/[ \t]*$//'
blahblah
คุณสามารถใช้hexdump
เพื่อยืนยันว่าsed
คำสั่งลอกอักขระที่ต้องการได้อย่างถูกต้อง
$ echo -e " \t blahblah \t " | sed 's/^[ \t]*//;s/[ \t]*$//' | hexdump -C
00000000 62 6c 61 68 62 6c 61 68 0a |blahblah.|
00000009
คลาสของอักขระ
นอกจากนี้คุณยังสามารถใช้ชื่อคลาสอักขระแทนการแสดงรายการชุด[ \t]
ดังนี้:
$ sed 's/^[[:blank:]]*//;s/[[:blank:]]*$//' < file
ตัวอย่าง
$ echo -e " \t blahblah \t " | sed 's/^[[:blank:]]*//;s/[[:blank:]]*$//'
เครื่องมือ GNU ส่วนใหญ่ที่ใช้ประโยชน์จากนิพจน์ทั่วไป (regex) สนับสนุนคลาสเหล่านี้
[[:alnum:]] - [A-Za-z0-9] Alphanumeric characters
[[:alpha:]] - [A-Za-z] Alphabetic characters
[[:blank:]] - [ \x09] Space or tab characters only
[[:cntrl:]] - [\x00-\x19\x7F] Control characters
[[:digit:]] - [0-9] Numeric characters
[[:graph:]] - [!-~] Printable and visible characters
[[:lower:]] - [a-z] Lower-case alphabetic characters
[[:print:]] - [ -~] Printable (non-Control) characters
[[:punct:]] - [!-/:-@[-`{-~] Punctuation characters
[[:space:]] - [ \t\v\f] All whitespace chars
[[:upper:]] - [A-Z] Upper-case alphabetic characters
[[:xdigit:]] - [0-9a-fA-F] Hexadecimal digit characters
การใช้ชุดตัวอักษรเหล่านี้แทนที่จะเป็นตัวอักษรดูเหมือนจะเป็นการสิ้นเปลืองพื้นที่ แต่ถ้าคุณกังวลว่าโค้ดของคุณเป็นแบบพกพาหรือต้องจัดการกับชุดอักขระอื่น (คิดว่าเป็นสากล) คุณอาจต้องการใช้ชื่อคลาส แทน.
อ้างอิง