यदि आप 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 उपकरण जो नियमित अभिव्यक्ति (रेगेक्स) का उपयोग करते हैं, इन वर्गों का समर्थन करते हैं।
[[: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
शाब्दिक सेटों के बजाय इनका उपयोग करना हमेशा अंतरिक्ष की बर्बादी की तरह लगता है, लेकिन यदि आप अपने कोड के पोर्टेबल होने, या वैकल्पिक वर्ण सेटों (अंतरराष्ट्रीय सोचें) से निपटने के लिए चिंतित हैं, तो आप संभवतः कक्षा के नामों का उपयोग करना चाहेंगे। बजाय।
संदर्भ