我有一个文本文件(file.txt),其内容如下:
foo1 3464
foo2 3696
foo3 4562
它包含进程和相应的PID。
使用 shell 脚本,我想根据 PID 在此文件中的该行中附加一个字符串(运行/未运行)。
例如,在上面的文件中,对于包含 PID 3696 的行,我想在末尾附加一个字符串“running”,这样文件就变成了:
foo1 3464
foo2 3696 running
foo3 4562
我该怎么做?
$ 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
.
使用循环遍历文件中的行并运行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
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
>