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


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

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

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

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

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

Есть у меня строка,
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
Подскажите, что ему не нравится и как убрать ошибку?
Спасибо.



Оффлайн ALiEN175

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 5074
  • The truth is out there
    • Просмотр профиля
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
ASUS P5K-C :: Intel Xeon E5450 :: 8 GB RAM :: Radeon R7 260X :: XFCE
SAMSUNG N150 :: Intel Atom N450 :: 2 GB RAM :: Intel GMA3150 :: XFCE

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

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

Оффлайн ALiEN175

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 5074
  • The truth is out there
    • Просмотр профиля
Re: Как правильно добавить команду в строку?
« Ответ #3 : 27 Октября 2021, 22:40:13 »
Ввысь, можно даже на что-то другое заменить и столбцы озаглавить. В справке всё написано
man column
ASUS P5K-C :: Intel Xeon E5450 :: 8 GB RAM :: Radeon R7 260X :: XFCE
SAMSUNG N150 :: Intel Atom N450 :: 2 GB RAM :: Intel GMA3150 :: XFCE

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

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

Оффлайн ALiEN175

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 5074
  • The truth is out there
    • Просмотр профиля
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
ASUS P5K-C :: Intel Xeon E5450 :: 8 GB RAM :: Radeon R7 260X :: XFCE
SAMSUNG N150 :: Intel Atom N450 :: 2 GB RAM :: Intel GMA3150 :: XFCE

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

  • Автор темы
  • Активист
  • *
  • Сообщений: 426
    • Просмотр профиля
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 ...]

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



Оффлайн ALiEN175

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 5074
  • The truth is out there
    • Просмотр профиля
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
ASUS P5K-C :: Intel Xeon E5450 :: 8 GB RAM :: Radeon R7 260X :: XFCE
SAMSUNG N150 :: Intel Atom N450 :: 2 GB RAM :: Intel GMA3150 :: XFCE

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

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

Спасибо.

Оффлайн ALiEN175

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 5074
  • The truth is out there
    • Просмотр профиля
Re: Как правильно добавить команду в строку?
« Ответ #9 : 28 Октября 2021, 00:00:24 »
все приходит с единичными пробелами между столбцами.
там табуляция. Видимо, echo съедает.
Замените "\t" на, например "     "
ASUS P5K-C :: Intel Xeon E5450 :: 8 GB RAM :: Radeon R7 260X :: XFCE
SAMSUNG N150 :: Intel Atom N450 :: 2 GB RAM :: Intel GMA3150 :: XFCE

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

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

 

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