我有一个包含数千行的文件,其内容类似于:
completedJob=job details abc
completedJob=job details def
currentJob=job details ghi
queuedJob=job details jkl
queuedJob=job details mno
我想改成这个:
completedJob=job details abc
completedJob=job details def
completedJob=job details ghi
currentJob=job details jkl
queuedJob=job details mno
在其他工作中,将
currentJob
更改为completedJob
将nextqueuedJob
更改为currentJob
。我已经看到了一个类似问题的答案,它给出了一个
sed
和一个awk
的解决方案(https://stackoverflow.com/a/8336918/257233),但我无法计算出在这个答案中,与号是如何作为第二行的,以及如何修改第二行的一部分。 最佳答案
你可以用这个,
$ cat test
completedJob=job details abc
completedJob=job details def
currentJob=job details ghi
queuedJob=job details jkl
queuedJob=job details mno
$ sed '/^currentJob/{s/^currentJob/completedJob/;n;s/^queuedJob/currentJob/}' test
completedJob=job details abc
completedJob=job details def
completedJob=job details ghi
currentJob=job details jkl
queuedJob=job details mno
说明:
/^currentJob/
匹配以currentJob
开头的行s/^currentJob/completedJob/;
在同一行上,用currentJob
替换completedJob
。n;
转到下一行。s/^queuedJob/currentJob/
在下一行,将startingqueuedJob
替换为currentJob
关于bash - 使用awk或sed在模式之后更改下一行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37476082/