Как выглядит «команда

Это легко делается с помощью SED :

$ ls /var/log/packages/*SBo | sed -r 's|.*/||; s/-[[:digit:]][[:digit:].]*-.*//'
webcore-fonts
winetricks
wireshark
wxGTK

Объяснение:

  • -R

    Это позволяет расширенные регулярные выражения, которые уменьшают количество необходимых высказаний.

  • S |. * / ||

    Это удаляет каталоги, которые предшествуют имя файла.

  • S / - [[: цифра:]] [[: цифра:].] * -. * //

    Это выглядит номер, окруженный тиреми, и удаляет его и все, что следует. Regex использует [: цифр:] вместо [0-9] , чтобы обеспечить, чтобы он работает во всех локалях и с расширенным набором символов.

на Mac OSX, попробуйте:

ls /var/log/packages/*SBo | sed -E -e 's|.*/||' -e 's/-[[:digit:]][[:digit:].]*-.*//'
0
20.05.2015, 07:51
2 ответа

В вашем сценарии команда является чтение со своего стандартного ввода; Если оно не принимает какой-то другой способ предоставления этой информации, вам необходимо продолжать кормить ее свой вклад таким образом. Поэтому, если вы не хотите использовать файл, Использование printf с трубой:

printf "To: me@domain.com\nMessage: Some message" | command
3
28.01.2020, 02:20

Новые оболочки, такие как bash и ksh93, поддерживают «здесь документы» и «здесь строки», если вы хотите, чтобы буквальные строки передавались вашей команде на STDIN. Фактически, большинство оболочек поддерживают здесь документы.

Здесь строка:

command <<<"some string"

Здесь документ:

command <<END
this will be on
command's STDIN until
an END is encountered by itself
END

В этом документе в качестве признака конца используется элемент после << , обозначающий конец документа. Терминатор должен стоять сам по себе в начале строки. Различные оболочки имеют несколько более изящные возможности, такие как необязательное удаление ведущих табуляции, разные кавычки на терминаторе, определяющие, раскрываются ли переменные и метасимволы оболочки и т. Д. За подробностями обращайтесь к странице руководства вашей оболочки.

В любом случае вы можете довольно легко протестировать обе эти структуры, используя cat - в качестве команды. Лично я очень часто использую здесь струны.

1
28.01.2020, 02:20

Теги

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