这是我在first模式之前添加文本的方式,我想在last模式
之后添加FILE_NAME="folder/myfile.c++"
STR_TO_ADD="string that i want to add"
PATTERN="banana"
ed $FILE_NAME 2>NULL 1>NULL<<EOF
/^$PATTERN
-1
a
$STR_TO_ADD
.
wq
EOF
banana
apple
banana
one
two
three
banana
apple
banana
string that i want to add
one
two
three
转到文件的最后一行并向后搜索模式。
FILE_NAME="folder/myfile.c++"
STR_TO_ADD="string that i want to add"
PATTERN="banana"
ed $FILE_NAME 2>NULL 1>NULL<<EOF
$
?^$PATTERN
a
$STR_TO_ADD
.
wq
EOF
$
文件的最后一行。?^$PATTERN
从当前行向后搜索。
user0的解决方案已经结束,但是如果最后一个匹配项位于文件的最后一行,它将找到前一个。相反,转到first行并向后搜索:
1
?^$PATTERN
a
$STR_TO_ADD
.
几天前我just posted this on my @ed1conf
account,所以在我的脑海中是新鲜的。
此外,如果您要添加之前文本(您已有的示例),则如果第一个匹配项位于第一行,则会失败,因为“ @ed1conf
”在文件。而是使用“ -1
”命令插入文本,而不是附加文本:
i
[您可能还需要确保“ $
/^$PATTERN
i
$STR_TO_ADD
.
”不包含任何包含单个句点的行,否则变量扩展会过早终止$STR_TO_ADD
插入(或i
待定)。