Как вывести все содержимое переменной из нескольких слов?

Как насчет:

:%s/.*/'&'/

«Заменить ноль или более символов теми символами, которым предшествует и следует одна кавычка -».

0
12.10.2019, 00:00
2 ответа

В awk можно было удалить некоторые поля/столбцы, назначив им пустую строку:

$ echo foo bar doo | awk '{$2 = ""; print}'
foo  doo

Однако это оставляет пустое пространство там, где раньше было поле, и сворачивает другие пробелы в строке, как пробел перед asdfздесь:

$ echo "foo bar doo    asdf"  | awk '{$2 = ""; print}'
foo  doo asdf

Вместо этого вы можете что-то сделать с sedи соответствующим регулярным выражением:

$ echo '0x1230ac1     User_Attribute1       Brown Fox is Near' |
  sed -Ee 's/([^[:space:]]+[[:space:]]+){2}//'
Brown Fox is Near

[^[:space:]]+соответствует набору не -пробелов символов, [[:space:]]+ряду пробелов, а окружающий (...){2}делает это дважды, поэтому все до второго запуска пробелов удаляется. Это должно работать, если пробелы - это пробелы или вкладки.

Итак, если я правильно понял вашу ситуацию, это должно подойти:

$ show attr=0x1230ac1 | sed -E -e 1d -e 's/([^[:space:]]+[[:space:]]+){2}//'
3
28.01.2020, 02:22

Для этого можно использовать gnu sed:

sed -nEe '2s/\S+/\n&/3;s/.*\n//p'

Предполагается, что переменная не имеет новой строки. И идентификатор пользователя не содержит пробелов.

0
28.01.2020, 02:22

Теги

Похожие вопросы