Вы можете сделать это в GNU sed:
sed '0,/Matched Keyword/s//New Inserted Line\n&/'
Но это не портативно. Так как портативность хорошая, вот она в awk:
awk '/Matched Keyword/ && !x {print "Text line to insert"; x=1} 1' inputFile
Или, если вы хотите передать переменную для печати:
awk -v "var=$var" '/Matched Keyword/ && !x {print var; x=1} 1' inputFile
Они оба вставляют текстовую строку перед первым появлением ключевого слова, на отдельной строке, в соответствии с вашим примером.
Помните, что для sed и awk ключевое слово matched является регулярным выражением, а не просто ключевым словом.
UPDATE:
Поскольку этот вопрос также помечен bash , вот простое решение, которое является чисто bash и не требует sed:
#!/bin/bash
n=0
while read line; do
if [[ "$line" =~ 'Matched Keyword' && $n = 0 ]]; then
echo "New Inserted Line"
n=1
fi
echo "$line"
done
В таком виде это как труба. Вы можете легко обернуть это во что-то, что воздействует на файлы.