【发布时间】:2015-05-16 14:40:27
【问题描述】:
经过 8 个多小时的搜索,我认输并为此创建了一个新问题。操作很简单,但我最难让它正常工作,似乎已经经历了 SO 上的所有其他解决方案。我需要两件事:
1.) 在整个文件中出现PBS FIRST MATCH 的行之前插入一行。它应该只在整个文件中发生一次。出于某种原因,我尝试过的每个解决方案最终都会为文件中的每次出现重复插入;我怀疑,因为 sed 是以每行为基础的。
所以这需要发生。原始文件:
stuff here
stuff here
PBS -N
PBS -V
stuff here
变成:
stuff here
stuff here
**inserted line**
PBS -N
PBS -V
stuff here
2.) 在整个文件中出现“PBS”的 LAST MATCH 的行之后追加一行。和以前一样:它应该在整个文件中只发生一次。
所以这需要发生:
stuff here
stuff here
PBS -N
PBS -V
stuff here
变成:
stuff here
stuff here
PBS -N
PBS -V
**inserted line**
stuff here
我在网上看到的所有解决方案(此时我打开了大约 20 个选项卡)都表明这应该相对容易。我毫不羞耻地宣布 sed 在这一点上损害了我的自尊心......感谢任何可以提供帮助的人
【问题讨论】:
-
我感受到你的痛苦。一个字符的命令……不明显。我真的只使用 sed 进行简单的搜索和替换,或者打印/删除特定的行。任何复杂的东西,我都会使用另一种更易读的语言,或者在这里 wh*re for rep ;)