Доступ к устройству через пути / dev / disk / by-xxx.
Эти пути остаются неизменными для устройства / раздела с символическими ссылками на собственно устройство / dev / sdXY, поддерживаемыми системой. Таким образом, хотя устройство может повторно подключиться к другому виртуальному устройству, путь, который вы можете использовать, не изменится.
/ dev / disk / by-uuid /
Каждый диск / устройство имеет уникальный UUID, поэтому использование пути, основанного на нем, всегда одинаково, независимо от того, к какому «устройству» он ведет. Например, моя система:
xenon-lornix: /> ll / dev / disk / by-uuid /
всего 0
lrwxrwxrwx 1 root root 10 июн 10 02:33 24c80c49-3f88-4343-9b91-c34087e49102 -> ../../sda5
lrwxrwxrwx 1 root root 10 июн 10 02:33 b2254550-cc90-46e4-a84f-cb32bca8f83d -> ../../sda1
Путь / dev / disk / by-uuid / b2254550-cc90-46e4-a84f-cb32bca8f83d
всегда будет указывать на раздел 1 этого диска, независимо от того, sda / sdb / sdc и т. Д. .
Доступны и другие методы:
/ dev / disk / by-label /
xenon-lornix:/> ll /dev/disk/by-label/
total 0
lrwxrwxrwx 1 root root 10 Jun 10 02:33 swap -> ../../sda5
lrwxrwxrwx 1 root root 10 Jun 10 02:33 xenon -> ../../sda1
Я всегда помечаю свои разделы, что упрощает создание файлов / использование / монтирование определенного устройства, вместо того, чтобы думать, / dev / sdc - это WD 1 ТБ, Samsung 2 ТБ или флэш-накопитель 1 ГБ.
Также упрощает монтаж: (из / etc / fstab )
LABEL=xenon / ext4 defaults,... and so forth
обходной путь может быть полезен, поскольку он технически связывает физическое соединение с конкретным устройством, возможно, полезно для вас, если диск не работает с правильной информацией о разделах, дает странные метки или что-то в этом роде.
xargs printf '(%d) ' <infile
будет работать, чтобы получить вывод, как ваш пример в вопросе из любой серии чисел до 20 лет или около того, цифры, разделенные одним или несколькими белыми пробелами.
Попробуйте SED
:
sed -i.bak 's/[0-9]\+/(&)/g' file.txt
В этом SED
замена, мы подставляем [0-9] \ +
, то есть последовательных цифр с (&)
, то есть скобки вокруг соответствующие цифры. G
означает, что эта замена состоится для всех сопоставленных шаблонов, в противном случае она будет только заменить первый матч.
После операции модифицированный файл будет file.txt
и исходный файл будет храниться как file.txt.bak
. Это хорошая практика, чтобы сделать резервную копию исходного файла, если вы не хотите сделать резервную копию, просто используйте:
sed -i 's/[0-9]\+/(&)/g' file.txt
Использование awk для захвата цифры (не печатает пустые строки):
awk '{for(i=1; i<=NF; i++) if($i ~ /[[:digit:]]/) $i="("$i")"} NF{print}' file