Это походит awk
был бы лучший выбор для Ваших потребностей, поскольку эти проблемы не существуют вследствие того, что он может использовать поля и записи:
x=$(awk '/some-pattern/ { sub(/\r$/, "") ; printf("%s", $NF) ; exit }' some-file)
Замена избегает Вашей проблемы с окончаниями строки CRLF.
sub(/\r$/, "")
удаляет запаздывание CR, если это существует. Как awk
обработки \n
как запись (строка) разделитель, Вы не должны разделять его, поскольку это не находится в данных, посмотревших на.
printf("%s", $NF)
печатает заключительное поле ($NF
) без запаздывающей новой строки (print
и некоторый другой awk
функции добавляют новую строку по умолчанию).
exit
происходит после первых двух действий - это - эквивалент m1
в Вашем grep
командная строка. Это гарантирует это awk
выходы после выполнения предыдущих двух команд - и начиная с этих команд выпущены на соответствие, и awk оценивает данные способом FIFO, это только распечатает первое соответствие.
Если Вам подключили Интернет к Вам сервер, это очень легко:
# yum -y install parted
когда Вы получаете этот вид сообщения, можно легко узнать, какие пакеты обеспечивает команде с помощью конфетки:
yum whatprovides "file"
yum install "package"
когда Вы выполняете установку, и она уже жалуется установленный пакет, который можно также выполнить:
rpm -ql "package" |grep file$
repoquery -l "package" |grep file$
Для знания, что является путем, было это, установлен. Мы можем всегда предполагать, что ПУТЬ не мог бы включать файл. Я добавляю $ в конце grep так, чтобы он нашел все, что заканчивается как файл иначе, Вы получите fileabc вместо файла.