Como anexar texto a linhas específicas em um arquivo usando o shell script?

0

Eu tenho um arquivo de texto (file.txt) com conteúdo parecido com:

foo1 3464 
foo2 3696 
foo3 4562 

Contém o processo e o respectivo PID.

Usando o shell script, quero anexar uma string (em execução / não em execução) a essas linhas nesse arquivo, de acordo com o PID.

Por exemplo, no arquivo acima, para a linha que contém o PID 3696, quero anexar uma string "em execução" no final, para que o arquivo se torne:

foo1 3464 
foo2 3696 running
foo3 4562 

Como posso fazer isso?

    
por smya.dsh 27.12.2012 / 09:49

1 resposta

3

Com perl , verificando se o processo está sendo executado ( somente Linux ):

perl -ape '$pid = $F[1]; if (-d "/proc/$pid") {s/$/ running/}'

com sed :

sed -i '/\<3696\>/ s/$/ running/' "$file"

com perl :

perl -i -pe 's/$/ running/ if /\b3696\b/' "$file"

perl -i -ape 's/$/ running/ if $F[1] eq "3696"' "$file"

com ed :

ed "$file" <<-EOF
/\<3696\>/ s/$/ running/
wq
EOF

(Aqui \< \> (sed) e \b \b (perl) significam limites de palavras - ambos os exemplos correspondem apenas a "3696", mas não a "136960" ou algo semelhante.)

    
por 27.12.2012 / 09:55