Tak. Możesz to zrobić w / tr
w ustawieniach ASCII (co w przypadku GNU jest tr
swego rodzaju jedyną funkcją) . Możesz użyć klas POSIX lub możesz odwoływać się do wartości bajtów każdego znaku według liczby ósemkowej. Możesz także podzielić ich transformacje na zakresy.
LC_ALL=C tr '[:upper:]\0-\101\133-140\173-\377' '[:lower:][\n*]' <input
Powyższe polecenie przekształciłoby wszystkie wielkie litery na małe, całkowicie zignorowało wielkie litery i przekształciło wszystkie inne znaki na nowe znaki. Oczywiście wtedy kończysz z mnóstwem pustych linii. Do tr
-s
powtórzenia queeze przełączania mogą być przydatne w tej sprawie, ale jeśli używasz go u boku [:upper:]
do [:lower:]
transformacji wtedy można skończyć ściskając duże litery, jak również. W ten sposób nadal wymaga drugiego filtra, takiego jak ...
LC... tr ... | tr -s \\n
...lub...
LC... tr ... | grep .
... a więc jest o wiele mniej wygodne niż robienie ...
LC_ALL=C tr -sc '[:alpha:]' \\n <input | tr '[:upper:]' '[:lower:]'
... który ściska -c
dopełnienie znaków alfabetycznych sekwencją w jeden nowy wiersz, a następnie przekształca górne na dolne po drugiej stronie rury.
Nie oznacza to, że zakresy tego rodzaju nie są przydatne. Rzeczy jak:
tr '\0-\377' '[1*25][2*25][3*25][4*25][5*25][6*25][7*25][8*25][9*25][0*]' </dev/random
... może być bardzo przydatny, ponieważ konwertuje bajty wejściowe na wszystkie cyfry w rozproszonym spektrum ich wartości. Nie marnuj, nie chcesz, wiesz.
Może to obejmować inny sposób przeprowadzenia transformacji dd
.
tr '\0-\377' '[A*64][B*64][C*64][D*64]' </dev/urandom |
dd bs=32 cbs=8 conv=unblock,lcase count=1
dadbbdbd
ddaaddab
ddbadbaa
bdbdcadd
Ponieważ dd
może to zrobić zarówno unblock
i lcase
konwersji w tym samym czasie, może to być nawet możliwe, aby przejść dużo pracy poza nim. Ale to może być naprawdę użyteczne tylko wtedy, gdy możesz dokładnie przewidzieć liczbę bajtów na słowo - lub przynajmniej można wcześniej wstawić każde słowo spacjami do przewidywalnej liczby bajtów, ponieważ unblock
je końcowe spacje na końcu każdego bloku.