Так что в конце концов я понял это сам. Для тех, кто сталкивается с этим, убедитесь, что при запуске cryptsetup status /dev/mapper/<device>
тип LUKS1
, а не PLAIN
. Похоже, что установщик Ubuntu неправильно настроен по умолчанию, поэтому стандартные команды LUKS не работали на устройстве. Поскольку это был обмен, я смог правильно восстановить шифрование, и теперь все работает гладко.
Вариант, который меняет местами поля в текущей записи перед ее печатью (, будет использовать текущее значение OFS
для разделителя полей вывода, если это установлено в командной строке (с помощью-v
)или в другом месте кода awk
).
$ awk '{ for (i = 1; i < NF/2; ++i) { t = $i; $i = $(NF-i+1); $(NF-i+1) = t } }; 1' file
cat dog pen apple
Только код awk
с явным print
вместо сокращенного 1
условия, вызывающего действие по умолчанию:
{
for (i = 1; i < NF/2; ++i) {
# swap $i and $(NF-i+1)
t = $i
$i = $(NF-i+1)
$(NF-i+1) = t
}
print
}
Использование GNU awk
и сохранение исходного интервала между полями:
gawk -v FPAT='[[:space:]]+|[^[:space:]]+' -v ORS= '
{for (i = NF; i > 0; i--) print $i; print RT}'
На вход " foo bar baz"
выводится "baz bar foo "
.
Это предполагает, что ввод является правильно закодированным текстом в локали.
Имейте в виду, что если ввод использует разделители строк MS -DOS, вы получите строки, начинающиеся с символов возврата каретки (, которым, возможно, предшествует больше пробелов ). Возможно, вам придется пройти -v RS='\r?\n'
, чтобы разместить их.