Как мне преобразовать содержимое файла .txt в Linux из вертикального в горизонтальное?

#linux #bash #sed

#linux #bash #sed

Вопрос:

У меня есть файл bash, do-something.sh

 #!/bin/bash
ps -efa > /command.txt
sed -i 's/root     //g' command.txt
sed -i '/UID/d' command.txt
sed -i -E 's/.{26}:00:.*//g' command.txt
sed -i '1s/^/kill -9 /' command.txt
sed -e :a -e '{N; s/n/ /g;ta}' command.txt
  

В настоящее время в нем перечислены идентификаторы процессов в command.txt в вертикальном формате я бы хотел, чтобы они были перечислены по горизонтали, чтобы я мог запустить команду с помощью «. / do-something» и остановить все процессы.

Комментарии:

1. Вы изучали управление процессами ? Это выглядит крайне сомнительно.

2. Пожалуйста, покажите нам фактический ввод и желаемый результат.

3. ps -ea -o pid= | sort -nr | xargs echo вы получите список всех текущих PID-адресов от последнего до самого раннего.

4. Этот скрипт — отличный пример того, почему sed -i это ужасная идея.

5. Игнорируя вопрос о том, следует ли вам анализировать вывод ps таким образом, попробуйте: ps -efa | sed -e 's/root //g' -e '/UID/d' ... > command.txt

Ответ №1:

Просто cat файл с идентификаторами pid xargs | kill -9 , например, так:

 cat pids.txt | xargs kill -9
  

Пример:

 echo 12345 67890 | xargs kill -9
  

Ответ №2:

Вы можете создать команду kill со всеми PID в конце в одной строке с помощью этой команды:

 ps -efa | awk 'BEGIN{printf "kill -9 "}{printf "%s ",$2}'