Большинство системных скриптов в (родственных Debian: Ubuntu, Mint и т.д.) Linux написаны для запуска в более быстром dash, которым по умолчанию в этих системах является /bin/sh. Причина двоякая:
Скорость системы. Меньший код dash быстрее загружается и также быстрее запускается. С некоторыми (небольшими?) дополнительными усилиями (затратами) для программистов shell-скриптов.
Безопасность. Разнообразие оболочек помогает устойчивости к ошибкам. Системы Debian в основном не были уязвимы к shellshock, потому что оболочка по умолчанию не имела такой уязвимости.
Bash действительно является оболочкой по умолчанию для пользователей, поскольку он более мощный и имеет гораздо больше элементов, облегчающих кодирование. Он также является sh
по умолчанию в Mac OS (тот, который связан с /bin/sh). Однако вызов bash
с именем ссылки sh
заставляет его запускаться как posix-совместимый shell.
cat file | sed -e 's/\(.\)/\1 /g' | awk '{ for (i = 1; i <= NF; i++) printf "%s" FS, $((NF-7+i) % NF+1); print ""}' | sed 's/ //g'
09098676356378
98008908976357627
809209089723571237
8387980897253712730912
909887908916523568
467890876756
46789009876535
324343765643
876543467890
987654234567890
876543123456789009
78987654323456
34567809876543
009876123456789
99876512345678
С сед:
sed -E 's/(.*)(.{6})/\2\1/'
или:
sed 's/\(.*\)\(.\{6\}\)/\2\1/'
С awk:
awk '{l=length-6;print(substr($0,l+1) substr($0,1,l))}'
С (GNU )awk:
awk '{print gensub(/(.*)(.{6})/,"\\2\\1",1)}'
Пара вкладышей perl one -:
разбиение каждой строки на символы:
perl -F'' -lane 'print join "", splice(@F, -6), @F' file
с использованием подстрок
perl -lpe '$_ = substr($_, -6). substr($_, 0, $#_ - 6)' file