Я не понимаю точно, что собирается делать скрипт (кроме пропущенных битов).
Вот что я придумал:
blkid | perl -ne 'print "$1\n" if m/LABEL="(.*?)"/o'
Это покажет это (в моей системе):
test^J123
WIN7VIRT
TEMP
Обратите внимание, как символ новой строки в метке обозначен как ^J
? Просмотр через шестнадцатеричный кодер показывает, что это действительно двухсимвольная комбинация 0x5e 0x4a
Надеюсь, вы сможете продвинуться дальше с этим.
PS: «доказательство» того, что символ новой строки действительно правильно указан в метке тома
tune2fs /dev/sdc1 -l
tune2fs 1.41.14 (22-Dec-2010)
Filesystem volume name: test
123
Last mounted on: /media/9868d90c-aede-4e7a-b105-d9312f8b17ab
Filesystem UUID: 9868d90c-aede-4e7a-b105-d9312f8b17ab
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
...
и на уровне блока:
dd if=/dev/sdc1 count=10 | xxd | grep 123
0000470: b105 d931 2f8b 17ab 7465 7374 0a31 3233 ...1/...test.123