3

次のような内容のテキスト ファイル (file.txt) があります。

foo1 3464 
foo2 3696 
foo3 4562 

プロセスとそれぞれの PID が含まれています。

シェル スクリプトを使用して、PID に従って、このファイルのその行に文字列 (実行中/実行中ではない) を追加したいと考えています。

たとえば、上記のファイルでは、PID 3696 を含む行の末尾に文字列「running」を追加して、ファイルが次のようになるようにします。

foo1 3464 
foo2 3696 running
foo3 4562 

どうすればできますか?

4

3 に答える 3

10
$ sed '/3696/ s/$/running/' file.txt 
foo1 3464 
foo2 3696 running
foo3 4562 

また

$ sed 's/3696/& running/' file.txt 
foo1 3464 
foo2 3696 running 
foo3 4562 

-i変更を に保存するオプションを追加しますfile.txt

于 2012-12-27T09:05:43.533 に答える
2

ループを使用してファイル内の行を反復処理し、実行psしてプロセスが実行されているかどうかを確認します。

while IFS= read -r line
do
    pid="$(awk '{print $NF}' <<< $line)"
    unset status
    if ps --no-headers -p "$pid" > /dev/null
    then
        status="running"
    fi
    echo "$line $status"
done < file
于 2012-12-27T09:17:31.910 に答える
1
awk '$2==3696{$3="running";}1' your_file


>cat temp
foo1 3464 
foo2 3696 
foo3 4562 
> awk '$2==3696{$3="running";}1' temp
foo1 3464 
foo2 3696 running
foo3 4562 
> 
于 2012-12-27T09:10:09.343 に答える