GNU kullanıyorsanız, komut bu şekilde yoğunlaştırılabilir sed
:
$ sed 's/^[ \t]*//;s/[ \t]*$//' < file
Örnek
İşte eylemde yukarıdaki komutu var.
$ echo -e " \t blahblah \t " | sed 's/^[ \t]*//;s/[ \t]*$//'
blahblah
Komutun istenen karakterleri doğru şekilde hexdump
çıkardığını onaylamak için kullanabilirsiniz 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
Karakter sınıfları
Ayrıca, kümeleri tam anlamıyla şöyle sıralamak yerine karakter sınıfı adlarını kullanabilirsiniz [ \t]
:
$ sed 's/^[[:blank:]]*//;s/[[:blank:]]*$//' < file
Örnek
$ echo -e " \t blahblah \t " | sed 's/^[[:blank:]]*//;s/[[:blank:]]*$//'
Normal ifadelerden (regex) yararlanan GNU araçlarının çoğu bu sınıfları desteklemektedir.
[[: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
Bunları değişmez kümeler yerine kullanmak her zaman bir alan israfı gibi görünür, ancak kodunuzun taşınabilir olması veya alternatif karakter kümeleriyle ilgilenmeniz gerekiyorsa (uluslararası düşünün), muhtemelen sınıf adlarını kullanmak isteyeceksiniz yerine.
Referanslar