Lệnh có thể được cô đọng như vậy nếu bạn đang sử dụng GNU sed
:
$ sed 's/^[ \t]*//;s/[ \t]*$//' < file
Thí dụ
Đây là lệnh trên trong hành động.
$ echo -e " \t blahblah \t " | sed 's/^[ \t]*//;s/[ \t]*$//'
blahblah
Bạn có thể sử dụng hexdump
để xác nhận rằng sed
lệnh đang tước chính xác các ký tự mong muốn.
$ echo -e " \t blahblah \t " | sed 's/^[ \t]*//;s/[ \t]*$//' | hexdump -C
00000000 62 6c 61 68 62 6c 61 68 0a |blahblah.|
00000009
Các lớp nhân vật
Bạn cũng có thể sử dụng tên lớp nhân vật thay vì liệt kê theo nghĩa đen các bộ như thế này [ \t]
:
$ sed 's/^[[:blank:]]*//;s/[[:blank:]]*$//' < file
Thí dụ
$ echo -e " \t blahblah \t " | sed 's/^[[:blank:]]*//;s/[[:blank:]]*$//'
Hầu hết các công cụ GNU sử dụng các biểu thức chính quy (regex) đều hỗ trợ các lớp này.
[[: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
Sử dụng các bộ này thay cho các bộ chữ luôn có vẻ như lãng phí không gian, nhưng nếu bạn quan tâm đến mã của mình là di động hoặc phải xử lý các bộ ký tự thay thế (nghĩ quốc tế), thì bạn có thể muốn sử dụng tên lớp thay thế.
Người giới thiệu