如何使用 shell 脚本将文本附加到文件中的特定行?

如何使用 shell 脚本将文本附加到文件中的特定行?

我有一个文本文件(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”或类似的。)

相关内容