@SHentai

Как сделать замену текста в файле, в одном последнем вхождение?

Здравствуйте.
Есть например файл test.txt, который содержит в себе 5 строк текста:
[04:14:24 INFO]: DEFOLTGaMiNg[/171.193.215.50:47721] logged in with entity id 63 at ([world]128.4256825339124, 27.0, -171.5978962471893)
>test
[04:15:36 INFO]: UUID of player tamerlan is 36a5e435-7a04-392b-b31e-8d29f5861d49
>test
[04:15:36 INFO]: tamerlan lost connection: Disconnected


Мне нужно заменить только последний ">test" на нужный мне текст, чтобы вышло так:
[04:14:24 INFO]: DEFOLTGaMiNg[/175.113.255.56:41741] logged in with entity id 63 at ([world]328.1506825339124, 27.0, -338.3378963371893)
>test
[04:15:36 INFO]: UUID of player tamerlan is 15a15e35-3d04-392b-b31e-8129d5861b49
[Login]>test
[04:15:36 INFO]: tamerlan lost connection: Disconnected


Думаю суть поняли, если нужны ещё какие-то подробности, предоставлю.
Желательно чтобы была команды через терминал.
За ранее спасибо!
  • Вопрос задан
  • 194 просмотра
Решения вопроса 1
planc
@planc
переворачиваем файл, заменяем первое вхождение, переворачиваем обратно
tac test.txt | sed '0,/test/{s/>test/[Login]>test/}' |tac
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@xibir
awk '
   { lines[NR - 1]=$0 }
   />test/ { last = NR - 1 }
   END {
      for(i = 0; i < NR; i++)
      {
         if (i == last)
            print "Your text"
         else print lines[i]
      }
   }
' test.txt
Ответ написан
Комментировать
semenenko88
@semenenko88
Системный администратор
sed -i 's/>test/[Login]>test/g' test.txt - так заменяет все вхождения, как определенное тоже интересно
Ответ написан
sotvm
@sotvm
Умный поймёт, а дураку и так всё равно.
я так понял нужно заменить предпоследнюю строку?
ps
...
ps
... и так раз 5 (писал/удалял
НО
вот наговнокодил ㋛ tac file1 | sed '2s/>test/\[Login\]>test/' | tac > file2
не соображаю как сделать без "тик-так cat-tac" как выбрать предпоследнюю строку,?
будем ждать комментов от опытных консольщиков .
читаем с файла file1
результат пишем в file2
можно как то сохранять в буфер и вывести сразу в исходный файл(без промежуточноого file2 )
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы