我有文件,我喜欢
a.b.c.d.log.1474113600
在a和.log之间有不同长度的点,我希望过滤它之前的所有点(也许用sed / awk?)。例如
a.b.c.d
f.e.g
a.b
等。有什么想法吗?
答案 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
//