У меня есть файл с именем test.txt
, который имеет:Удалить весь текст из последней точки в Баш
abc.cde.ccd.eed.12345.5678.txt
abcd.cdde.ccdd.eaed.12346.5688.txt
aabc.cade.cacd.eaed.13345.5078.txt
abzc.cdae.ccda.eaed.29345.1678.txt
abac.cdae.cacd.eead.18145.2678.txt
aabc.cdve.cncd.ened.19945.2345.txt
Если я хочу, чтобы удалить все после первой .
как:
cde.ccd.eed.12345.5678.txt
cdde.ccdd.eaed.12346.5688.txt
cade.cacd.eaed.13345.5078.txt
cdae.ccda.eaed.29345.1678.txt
cdae.cacd.eead.18145.2678.txt
cdve.cncd.ened.19945.2345.txt
Тогда я сделаю
for i in `cat test.txt`; do echo ${i#*.}; done
, но если я хочу удалить все после последнего .
:
abc.cde.ccd.eed.12345.5678
abcd.cdde.ccdd.eaed.12346.5688
aabc.cade.cacd.eaed.13345.5078
abzc.cdae.ccda.eaed.29345.1678
abac.cdae.cacd.eead.18145.2678
aabc.cdve.cncd.ened.19945.2345
Что мне делать?
См [BASH FAQ # 1] (http://mywiki.wooledge.org/BashFAQ/001) для правильного пути, чтобы прочитать файл линию за линией , Не используйте цикл 'for'. – chepner