У меня тоже была эта проблема. Я обнаружил команду:
/sbin/get _ hd _ smartinfo
При запуске с out args печатает руководство по использованию.
Чтобы подключить номер диска к устройству, используйте следующее:
/sbin/get _ hd _ smartinfo -d 2 -i 1
Нажмите ctrl-c для завершения и распечатайте «Save file to/ tmp/sdX_smart_zzzzzzz», где sdX является вашим устройством.
[/var/log] # /sbin/get_hd_smartinfo -d 2 -i 1
001 Raw_Read_Error_Rate 215244560 119 099 006 OK
...
242 Lifetime_Reads_To_Host 23449824883497 100 253 000 OK
^CCatch interrupt Singal,Interrupt ..
Save file to /tmp/sdb_smart_563ffc1c
-121--79151- этот вопрос на самом деле тогда о BSD tr, а не gnu tr.
BSD tr man:
-C Complement the set of characters in string1, that is ``-C ab''
includes every character except for `a' and `b'.
-c Same as -C but complement the set of values in string1.
FreeBSD 8.2 October 13, 2006
GNU tr man:
-c, -C, --complement
use the complement of SET1
OSX встроен в инструменты, я считаю, что это версии BSD.
[фиксированная опечатка, sed/tr]
-121--45189- Возможно, update-grub2
не был запущен после завершения установки Linux? Обычно это помогает обновить меню параметров загрузки.
Я вижу комментарий clearkimura
об изменении /boot/grub/grub.cfg
, но в этом файле ясно сказано не изменять его содержимое, поскольку он автоматически генерируется на основе /etc/default/grub
и /etc/grub.d/
.
с gnu awk(gawk
)вы можете использовать некоторые утверждения нулевой -длины, такие как \<
или\>
:
$ echo 'a\ b c' | gawk 'BEGIN{FS="\\> +"} {print $1}'
a\ b
, но, к сожалению, не полноценные -из perl
или pcre
(, например. (?<!\\)
, (?<=\w)
и т. д.):
$ echo 'a\ b, c' | perl -nle '@a=split /(?<!\\)\s+/, $_; print $a[0]'
a\ b,
Всего лишьsed
:
sed -r 's/^((([^\]*\\ ){1,})?[^ ]*).*/\1/' infile
Или короче:
sed -r 's/^(([^\]*\\ )*[^ ]*).*/\1/' infile
Это (([^\]*\\ ){1,})?[^ ]*
соответствует:
[^\]*\\
:все, что не является обратной -косой чертой, которая заканчивается обратной -косой чертой, за которой следует пробел (обратите внимание, что \
внутри класса символов экранирование не требуется, а снаружи ). ([^\]*\\ ){1,}
:сопоставление выше с одним -или -больше раз появления. (([^\]*\\ ){1,})?
:это необязательно при использовании (...)?
; вместо этого мы могли бы использовать ([^\]*\\ ){0,}
или ([^\]*\\ )*
. ((([^\]*\\ ){1,})?[^ ]*)
:соответствует вышеприведенному, за которым необязательно следует все, что не является пробелом, и сохраняется как групповое совпадение с \1
в качестве обратной ссылки -. ((([^\]*\\ ){1,})?[^ ]*).*
:соответствует выше (...)
и всем остальным .*
. затем заменяющая часть просто напечатает \1
, который является выходом:
5678
testing,\ group
[testing
ip\ 5.6.7.8
launch-wizard-1
456dlkjfa
1.2.3.4
test
default
launch-wizard-2
launch-wizard-3
2.3.4.5/32
Вы можете заменить \space чем-то другим, а потом вернуться обратно.
sed 's/\\ /\\x20/g' data_file | awk '{ print $1; }' | sed 's/\\x20/\\ /g'
С GNU grep
или совместимым:
grep -Po '^(\\.|\S)*'
Или с ЭРЭ:
grep -Eo '^(\\.|[^\[:space:]])*'
Это трактует \
как оператор кавычек, пробелы как разделитель, но также и саму себя. То есть при вводе foo\\ bar
он возвращает foo\\
.