过滤不同长度的点之间的文件名

时间:2016-09-19 08:27:29

标签: awk sed

我有文件,我喜欢 a.b.c.d.log.1474113600 在a和.log之间有不同长度的点,我希望过滤它之前的所有点(也许用sed / awk?)。例如

a.b.c.d f.e.g a.b

等。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

awk版本:使用.log作为分隔符将文本划分为多个部分,然后打印文本的第一部分。

awk -F'.log' '{NF=1}1' <<< "a.b.c.d.log.1474113600"
a.b.c.d

注意:上述命令与以下命令相同:

awk -F'.log' '{print $1}' <<< "a.b.c.d.log.1474113600"

或使用变量扩展:

x="a.b.c.d.log.14741136100"
echo ${x%%.log*}
a.b.c.d

答案 1 :(得分:0)

我没有得到你想要的东西,但如果你的意思是文件 - 在a和.log之间有不同长度的点,我想在它之前过滤所有的点< / em>删除ALTER Procedure [dbo].[spSearch_Stock] (@KeyW varchar(50), @Empty int) AS BEGIN SET @Empty = (SELECT COUNT(Customer) FROM tbl_Stock) IF @Empty > 0 SELECT StockID, Abb, LotNo, InvoiceNo, TeaState, Customer, Broker, TeaGrade, Pkgs, NetWeight, TotWeight, PriceUSD, CurrencyRate, TotalAmtUSD, BrokerageUSD FROM tbl_Stock WHERE (Abb) LIKE '%'+@Keyw+'%' ORDER BY StockID ASC, Abb ASC ELSE SELECT 'null' as StockID, 'null' as Abb, 'null' as LotNo, 'null' as InvoiceNo, 'null' as TeaState, 'null' as Customer, 'null' as Broker, 'null' as TeaGrade, 'null' as Pkgs, 'null' as NetWeight, 'null' as TotWeight, 'null' as PriceUSD, 'null' as CurrencyRate, 'null' as TotalAmtUSD, 'null' as BrokerageUSD END 之前的所有点(这听起来对我来说合理),我会使用.log带有负面的后观并向前看它:

perl

即。将所有$ echo a.b.c.d.log.1474113600 | perl -pe 's/(?<!log)\.(?!log)//g' abcd.log.1474113600 s/替换为/g之前.(?<!log) (?!log)之后log //