如果您使用的是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:]]*$//'
大多数使用正则表达式(regex)的GNU工具都支持这些类。
[[: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
使用这些而不是文字集似乎总是在浪费空间,但是如果您担心代码的可移植性,或者不得不处理其他字符集(请考虑国际性的话),那么您可能会想使用类名代替。
参考文献