Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Как правильно добавить команду в строку?  (Прочитано 730 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Ввысь

  • Автор темы
  • Активист
  • *
  • Сообщений: 473
    • Просмотр профиля
Здравствуйте.

Есть у меня строка,
out="$(xargs -n 1 -a file1 -I {} grep -m 5 {} file2)" ; [[ -n "$out" ]] && echo "$out"| mutt -s "Тема" -- mail@mail.ruС ней все хорошо, приходит на почту вот такое

1 46.10.14.18 221 25.10.21.22:02
1 46.10.14.18 221 25.10.21.23:00
1 46.10.14.18 221 27.10.21.19:00
2 46.10.14.18 221 26.10.21.22:00
28 46.10.14.18 221 27.10.21.20:00

Решил поправить столбцы, нашел вот это
awk '!/^#/{print $1 "\t" $3 "\t" $2 "\t" $4}'
запускаю,
xargs -n 1 -a file1 -I {} grep -m 5 {} file2| awk '!/^#/{print $1 "\t" $3 "\t" $2 "\t" $4}'
все отлично и красиво
Код: (xml) [Выделить]
1       46.10.14.18 221    25.10.21.22:02
1       46.10.14.18 221    25.10.21.23:00
2       46.10.14.18 221    26.10.21.22:00
1       46.10.14.18 221    27.10.21.19:00
28      46.10.14.18 221    27.10.21.20:00

добавляю с своею строку и получаю вот такую ошибку

out="$(xargs -n 1 -a file1 -I {} grep -m 5 {} file2| awk '!/^#/{print $1 "\t" $3 "\t" $2 "\t" $4}'| sort -k4)" ; [[ -n "$out" ]] && echo "$out"| mutt -s "Тема" -- mail@mail.ru
bash: !/^#/{print: event not found
Подскажите, что ему не нравится и как убрать ошибку?
Спасибо.



Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6690
  • 20% Cooler
    • Просмотр профиля
Re: Как правильно добавить команду в строку?
« Ответ #1 : 27 Октября 2021, 21:29:46 »
Решил поправить столбцы, нашел вот это
column не проще?

cat test.txt | column -t
1   46.10.14.18  221  25.10.21.22:02
1   46.10.14.18  221  25.10.21.23:00
1   46.10.14.18  221  27.10.21.19:00
2   46.10.14.18  221  26.10.21.22:00
28  46.10.14.18  221  27.10.21.20:00
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн Ввысь

  • Автор темы
  • Активист
  • *
  • Сообщений: 473
    • Просмотр профиля
Re: Как правильно добавить команду в строку?
« Ответ #2 : 27 Октября 2021, 22:30:26 »
ALiEN175, да, так гораздо проще), а расстояние между столбцами можно увеличить?

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6690
  • 20% Cooler
    • Просмотр профиля
Re: Как правильно добавить команду в строку?
« Ответ #3 : 27 Октября 2021, 22:40:13 »
Ввысь, можно даже на что-то другое заменить и столбцы озаглавить. В справке всё написано
man column
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн Ввысь

  • Автор темы
  • Активист
  • *
  • Сообщений: 473
    • Просмотр профиля
Re: Как правильно добавить команду в строку?
« Ответ #4 : 27 Октября 2021, 23:06:45 »
ALiEN175, я там был, вроде как -с, но у меня почему-то ничего не меняется. Поэтому и спросил.

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6690
  • 20% Cooler
    • Просмотр профиля
Re: Как правильно добавить команду в строку?
« Ответ #5 : 27 Октября 2021, 23:11:14 »
column -t -o '      ' ./test.txt
1       46.10.14.18      221      25.10.21.22:02
1       46.10.14.18      221      25.10.21.23:00
1       46.10.14.18      221      27.10.21.19:00
2       46.10.14.18      221      26.10.21.22:00
28      46.10.14.18      221      27.10.21.20:00

column -t -o ' || ' ./test.txt
1  || 46.10.14.18 || 221 || 25.10.21.22:02
1  || 46.10.14.18 || 221 || 25.10.21.23:00
1  || 46.10.14.18 || 221 || 27.10.21.19:00
2  || 46.10.14.18 || 221 || 26.10.21.22:00
28 || 46.10.14.18 || 221 || 27.10.21.20:00
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн Ввысь

  • Автор темы
  • Активист
  • *
  • Сообщений: 473
    • Просмотр профиля
Re: Как правильно добавить команду в строку?
« Ответ #6 : 27 Октября 2021, 23:23:30 »
ALiEN175,
column -t -o ' || ' 1111.txt
column: invalid option -- 'o'
usage: column [-tx] [-c columns] [-s sep] [file ...]

column -t -o '      ' 1111.txt
column: invalid option -- 'o'
usage: column [-tx] [-c columns] [-s sep] [file ...]

такие примеры я находил, что-то не выходит



Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6690
  • 20% Cooler
    • Просмотр профиля
Re: Как правильно добавить команду в строку?
« Ответ #7 : 27 Октября 2021, 23:45:22 »
Ввысь, мдя. это util-linux версии посвежее. Тогда с awk разбираться. В нём не силён.

bash: !/^#/{print: event not found
Ругается на восклицательный знак - это подстановка истории и вроде как не экранируется.
Попробуйте убрать эту конструкцию, ИМХО, она просто запрещает выводить строки с # в начале:
out="$(xargs -n 1 -a file1 -I {} grep -m 5 {} file2| awk '{print $1 "\t" $3 "\t" $2 "\t" $4}'| sort -k4)" ; [[ -n "$out" ]] && echo "$out"| mutt -s "Тема" -- mail@mail.ru
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн Ввысь

  • Автор темы
  • Активист
  • *
  • Сообщений: 473
    • Просмотр профиля
Re: Как правильно добавить команду в строку?
« Ответ #8 : 27 Октября 2021, 23:52:52 »
ALiEN175, получилось, но, к сожалению, на почту все приходит с единичными пробелами между столбцами.
Буду искать другие варианты.

Спасибо.

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6690
  • 20% Cooler
    • Просмотр профиля
Re: Как правильно добавить команду в строку?
« Ответ #9 : 28 Октября 2021, 00:00:24 »
все приходит с единичными пробелами между столбцами.
там табуляция. Видимо, echo съедает.
Замените "\t" на, например "     "
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн Ввысь

  • Автор темы
  • Активист
  • *
  • Сообщений: 473
    • Просмотр профиля
Re: Как правильно добавить команду в строку?
« Ответ #10 : 28 Октября 2021, 00:47:56 »
ALiEN175, не а, не хочет, все равно пробел минимальный.
Оно в терминале все выглядит отлично, а вот на почту приходит уже измененное.
« Последнее редактирование: 28 Октября 2021, 01:01:00 от Ввысь »

 

Страница сгенерирована за 0.052 секунд. Запросов: 25.