touch newFile
echo -n "$(cat file1)" > newFile
echo -n $userInput >> newFile
cat file2 >> newFile
Это сделало трюк.
Спасибо Мэтью за это решение, но я нашел отличный вариант, чтобы избежать ненужных результатов. Так что синтаксис почти такой же, но я добавил к --format
дополнительный параметр ppid
Идентификатор родительского процесса, в большинстве случаев я считаю, что родительский процесс всегда имеет номер 1 в выводе, что помогает сортировать его так, как я хочу.
Это выглядит следующим образом:
shell: >
ps -e --format="ppid pid cmd" |
grep process.cfg |
sed -e "s/[[:space:]]\+/ /g"
register: output_process
И вывод выглядит следующим образом:
1 54345 /var/local/bin/application -c /var/local/etc/process.cfg
6435 6577 grep --color=auto process.cfg
Теперь легко использовать для сортировки ансибельные модули:
- name: Kill process
become: yes
shell: "kill {{ output_process.stdout_lines[0].split(' ')[2] }}"
Что это делает? он выбирает строку 0, которая является первой строкой, разделяет вывод между пробелами и выбирает третью фразу. В выходных есть :space:
до ppid
, поэтому PID
является третьим
Еще раз спасибо за ваше решение Мэтью, это может быть полезно в другом случае.
Но я думаю, что у ansible есть проблемы с 2 greps в 1 команде
blockquote>То есть точно неверно
, если я не использую обратный "grep -v color", эта раздражающая вещь появляется "grep --color = auto", я не могу вырезать PID, который мне нужен в другой задаче, которая убивает процесс, потому что реальный процесс находится во второй строке.
blockquote>Вы сталкиваетесь с классическим случаем процесса grep, совпадающего с собственным регулярным выражением, как это будет происходить во многих «простых» случаях. То, что вы хотите, это регулярное выражение, которое соответствует вашей строке, но не соответствует самому себе. В приведенном выше примере это будет:
shell: 'ps -e --format="pid cmd" | grep process[.]cfg | sed -e "s/[[:space:]]\+/ /g"'
, потому что
process[.]cfg
соответствуетprocess.cfg
, но не соответствуетprocess[.]cfg
. Я также исправил ваше регулярное выражение, потому что в регулярном выражении.
означает любой символ, что не похоже на то, что вы действительно хотели бы получитьЧто касается этого бита
--color
, вы, вероятно, можете обойти эту глупость, используя полный путь кgrep
, что приведет к bash для реального выполнения двоичного файла, в отличие от некоторого псевдонима, который использует--color=auto
; На самом деле я бы не ожидал, что цвета будут отображаться в заданном порядке, потому что это не правильно$TERM
, но системы странные