Замена символа новой строки на вертикальную черту и символ новой строки

Это перестало работать, потому что Вы работаете ps u. От man ps:

u Дисплей, ориентированный пользователями на формат.

Это означает это ps только перечислит процессы, принадлежавшие текущему пользователю. Когда Вы запускаете скрипт вручную, тот пользователь - Вы так, Ваш процесс перечислен правильно.

(Как @Gilles очень правильно указанный, использование -A заставит все процессы быть распечатанными так, чтобы объяснение было просто неправильным. pgrep еще лучше хотя).


Так или иначе лучший способ сделать это состоял бы в том, чтобы использовать pgrep:

   pgrep,  pkill  - look up or signal processes based on
   name and other attributes

Изменение

w=`ps u -A | grep -P ".+Sl.+/usr/local/MySource/endpoint" -c` 

кому:

w=`pgrep -c endpoint`
3
12.05.2015, 17:57
4 ответа

Если вы не присоединились к линиям \ N не отображаются в SED пространство шаблонов: анкер в конце концов $ .

Так с GNU SED:

sed -i 's/$/|/' temp.txt
9
27.01.2020, 21:08

Вы можете использовать GNU SED :

sed -i 's/.*/&|/' file

Специальный символ & соответствует шаблону, совпадающему в RHS.

0
27.01.2020, 21:08

Можно использовать вставку :

$ :|paste -d'|' file - > new_file
one|two|three|four|five|
abc|def|pqr|lmn|xyz|

или perl:

perl -i.bak -ple '$_.="|"' file
3
27.01.2020, 21:08

С помощью GNU sed можно заменить конец строки на |, используя:

sed -i 's/$/|/' temp.txt

Это совпадет с концом строки и "заменить" его на |, но, конечно, строка все равно закончится и сохранит свой \n

3
27.01.2020, 21:08

Теги

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