我有一个文本文件(file.txt),其内容如下:
foo1 3464
foo2 3696
foo3 4562
它包含进程和相应的 PID。
使用 shell 脚本,我想根据 PID 向该文件的行附加一个字符串(正在运行/未运行)。
例如,在上面的文件中,对于包含 PID 3696 的行,我想在末尾附加一个字符串“running”,这样文件就变成:
foo1 3464
foo2 3696 running
foo3 4562
我该怎么做?
答案1
通过perl
实际检查进程是否正在运行(仅限 Linux):
perl -ape '$pid = $F[1]; if (-d "/proc/$pid") {s/$/ running/}'
和sed
:
sed -i '/\<3696\>/ s/$/ running/' "$file"
和perl
:
perl -i -pe 's/$/ running/ if /\b3696\b/' "$file"
perl -i -ape 's/$/ running/ if $F[1] eq "3696"' "$file"
和ed
:
ed "$file" <<-EOF
/\<3696\>/ s/$/ running/
wq
EOF
(这里\< \>
(sed) 和\b \b
(perl) 表示单词边界 - 两个例子都只匹配“3696”,但不匹配“136960”或类似的。)