【发布时间】:2014-10-29 14:56:38
【问题描述】:
我有一个名为 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 了解逐行读取文件的正确方法。不要使用
for循环。