добавьте “#\” в начале к выбранным строкам в Файле

Вывод плоскости top не подходит для отображения ни на чем кроме терминала. Необходимо использовать -b переключатель для получения простого текста.

И конец символов строки собирается быть разделенным (замененный пробелами) Вашей оболочкой с тем, что Вы делаете - нет никакой причины для Вас сохранить те выводы в переменных, Вы могли просто выполнить те команды при необходимости в них.

Я предполагаю, что Вы возвращаете данные веб-браузеру. Если это действительно имеет место, необходимо сделать некоторое минимальное форматирование HTML, если Вы хотите шанс при отображении вывода правильно.

Попробуйте что-то как:

#! /bin/sh
echo -e "Content-type: text/html\n"
echo "<html><body>"
echo "<h1>top</h1>"
echo "<pre>"
top -b -n 1
echo "</pre>"
echo "<h1>ps</h1>"
echo "<pre>"
ps aux
echo "</pre>"
echo "</body></html>"
2
09.04.2013, 02:10
2 ответа

Односторонняя дорога:

awk 'NR==FNR{a[$0];next}$0 in a{printf "#";}1'  fileB fileA

Объяснение:

NR==FNR{a[$0];next} => awk читает fileB в массив.

$0 in a{printf "#";} =>, Если какая-либо строка fileA соответствует какому-либо содержанию массива, помещенному # в начале.

1 => Печатают каждую строку fileA

Используя sed:

$ x=$(sed -e :a -e 'N;s/\n/\\|/;ta' FileB)
$ sed "s/$x/#&/" FileA

1-я команда sed готовит строку, где все строки объединены как строка и разграничены "|" и сохранены в $x. 2-й sed вставляет # в начале для соответствия строки любому из шаблонов, сохраненных в переменном $x.

3
27.01.2020, 22:06
  • 1
    Thaks Очень..., я пытаюсь узнать с "SED"..... –  Daya 08.04.2013, 13:07
  • 2
    , добавил sed решение.. –  Guru 08.04.2013, 13:17
  • 3
    Благодарность снова..... мог Вы. объясните awk логику... –  Daya 08.04.2013, 13:52

Я смог сделать это со следующей остротой:

sed "$(for str in $(cat fileB); do echo -n "s/$str/#\0/; "; done;)" fileA

sed команда создается в подоболочке цикличным выполнением по fileB. Это затем раньше заменяло согласующие отрезки длинной линии a # и подобранная строка.

0
27.01.2020, 22:06

Теги

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