sed命令修改文件,而另一个sed命令也修改文件

时间:2019-09-26 14:40:23

标签: sed

我的问题与我用来更新状态文件的过程有关。我正在运行一个简单的程序

sed -i "s/info/newinfo/" file.txt

但是此过程可以多次调用。

我的问题是,如果两个进程同时运行sed命令来修改文件,会不会引起问题?

我尝试通过同时在命令中运行2进行两次不同的sed修改来对此进行测试。它们似乎工作正常,但我不知道它们是否实际上同时运行。也许该命令是如此之快,以至于来自两个不同进程的读写访问不会有问题。

1 个答案:

答案 0 :(得分:1)

好让我们展示一下,并显示一个不太大的文件:

cd /tmp
seq 1000000 2000000  > mediumfile.txt
ls -hl mediumfile.txt 
-rw-r--r-- 1 user  user  7.7M Sep 26 16:53 host  file.txt
wc mediumfile.txt 
1000001 1000001 8000008 host  file.txt

好的,我的7.7Mb文件中有1000k行。

如果我通过两个分开的()过程(从1801000到1802000和从1803000到1804000)同时丢掉2 x 1001行。

sed '/1803000/,/1804000/d' -i mediumfile.txt & \
    sed '/1801000/,/1802000/d' -i mediumfile.txt ;wait
[1] 30727
[1]+  Done                    sed '/1803000/,/1804000/d' -i mediumfile.txt

wc -l mediumfile.txt 
999000 host  file.txt

1k行太多了!

grep '180[13]400' mediumfile.txt
1803400

就是这样。