Как объединить 2 команды в одну?

Просто используйте инструмент, который позволяет редактировать на месте. Perl, например:

perl -i -F'\|' -lane 's/[ \t]+//g for @F; print lc("$F[0]|$F[1]$F[2]$F[3]|$F[4]")' a
  • -i включает редактирование in-plcae, изменения применяются непосредственно к исходному файлу (другими словами, perl имеет дело с созданием и удалением временный файл).

  • -a включает автоматическое разделение символа, заданного -F , поля сохраняются в массиве @F .

  • s / [\ t] + // g удаляет все пробелы и табуляции, а lc () переводит все в нижний регистр.

0
12.02.2019, 00:23
2 ответа

Конвейер cmd1 | cmd2отправляет вывод первой команды на стандартный ввод второй. Кажется, вы хотите поместить вывод первой команды в командную строку второй. Способ сделать это — подстановка команды :$(command).

Это поместит вывод cmd1в командную строку cmd2:

.
cmd1 "$(cmd2)"

Или, в вашем случае:

date -d "$(echo... |cut)" +%s 
2
28.01.2020, 02:30

Для удобочитаемости я бы по-прежнему использовал несколько строк:

datetime=$( echo "11-FEB-19 06.14.52.352000000 AM" | sed -e 's/\./:/g' -e 's/:[^:]\+$//' )
epoch=$( date -d "$datetime" +%s )
echo "$epoch"
0
28.01.2020, 02:30

Теги

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