bash - Sed 删除两个非字母数字字符之间的所有内容
问题描述
我有以下字符串:
com.advantco.aws.core;version="[1.0,2)",com.advantco.aws.core.adapter;version="[1.0,2)",com.advantco.aws.core.adapter.channelreader.receiver;version="[1.0,2)",com.advantco.aws.core.adapter.channelreader.sender;version="[1.0,2)",com.advantco.aws.core.service;version="[1.0,2)",com.advantco.aws.core.service.s3;version="[1.0,2)"
需要在;version
al 之后删除所有内容,直到",
基本上只需要获取所有包名称,输出就可以了
com.advantco.aws.core
com.advantco.aws.core.adapter
com.advantco.aws.core.adapter.channelreader.receiver
...
我正在尝试这个
sed -e's/.;*.[",]//g'
但它只给了我
com.adntco.aws.core;versio[1,com.adntco.aws.core.adapter;versio[1
我需要在一行中匹配多个匹配项。我在这里做错了什么?
更新一:有些包缺少导入版本,有些包有其他子属性而不是版本,比如 com.advantco.core;optiona=true,所以基本上我希望在 ; 之后删除所有内容 直到最后一个逗号(即分号后面可能有多个逗号,或者没有分号,只有一个逗号。)。
例子
com.advantco.aws.core;version="[1.0,2)",com.advantco.aws.core.adapter,com.advantco.aws.core.adapter.channelreader.receiver;version=false,com.advantco.aws.core.adapter.channelreader.sender;optional=true,com.advantco.aws.core.service;version="[1.0,2)",com.advantco.aws.core.service.s3;version="[1.0,2)"
为个别评论添加了其他详细信息
边缘测试用例对于我的一些导入来说这是失败的,所以边缘测试用例在你有分辨率=可选而不是版本的地方的例子..
com.advantco.base.hci.af.util;version="[1.0,2)", javax.security.auth.x500;resolution:=optional,com.advantco.base.hci.variablesubstitution,com.advantco.base.logging,com.advantco.base.mime,com.advantco.base.net,com.advantco.base.variablesubstitution,com.advantco.suarcrm.core.adapter;version="1.0,2)",com.advantco.sugarcrm.core.error,javax.naming.directory;resolution:=optional
预期产出
com.advantco.base.hci.af.util
javax.security.auth.x500
com.advantco.base.hci.variablesubstitution
com.advantco.base.logging
com.advantco.base.mime
com.advantco.base.net
com.advantco.base.variablesubstitution
com.advantco.suarcrm.core.adapter
com.advantco.sugarcrm.core.error
javax.naming.directory
EDGE 测试用例 2 仍然打开
示例清单文件看起来完全像这样,@anubhavas 答案是最接近的,但它还捕获了后面不需要捕获的导出包。导入的最后一行和导出的第二行也会合并,从而产生错误的结果。
Bnd-LastModified: 1494408636933
Bundle-ManifestVersion: 2
Import-Package: com.advantco.base,com.advantco.base.logging,com.advant
co.base.mime,com.advantco.base.net,com.advantco.base.variablesubstitu
tion,com.advantco.rest,com.advantco.rest.auth,com.advantco.rest.auth.
oauth2,com.advantco.sugarcrm.core,com.advantco.sugarcrm.core.adapter,
com.advantco.sugarcrm.core.error,com.advantco.sugarcrm.core.iface,com
.advantco.sugarcrm.core.object,com.advantco.sugarcrm.core.object.meta
data,com.advantco.sugarcrm.core.rest,com.advantco.sugarcrm.core.rest.
auth,com.advantco.sugarcrm.core.rest.metadata,com.advantco.sugarcrm.c
ore.rest.op,com.advantco.sugarcrm.core.rest.op.v10,com.advantco.sugar
crm.core.rest.parser,com.advantco.sugarcrm.core.rest.parser.object,co
m.advantco.sugarcrm.core.rest.parser.xml,com.advantco.sugarcrm.core.r
est.service,com.advantco.sugarcrm.core.result,com.advantco.sugarcrm.c
ore.result.v10,com.advantco.sugarcrm.core.service,com.advantco.sugarc
rm.core.util,com.advantco.sugarcrm.core.xml,javax.activation,javax.cr
ypto,javax.crypto.spec,javax.mail,javax.xml.bind,javax.xml.parsers,ja
vax.xml.stream,javax.xml.transform,javax.xml.transform.dom,javax.xml.
transform.stream,org.apache.commons.codec.binary,org.apache.commons.c
ollections4.map,org.apache.commons.httpclient,org.apache.commons.http
client.util,org.json
Require-Capability: osgi.ee;filter:="(&(osgi.ee=JavaSE)(version=1.6))"
Tool: Bnd-3.3.0.201609221906
Export-Package: com.advantco.sugarcrm.core;uses:="com.advantco.base.lo
gging,com.advantco.sugarcrm.core.object";version="1.0.0",com.advantco
.sugarcrm.core.adapter;uses:="com.advantco.base,com.advantco.base.log
ging,com.advantco.base.net,com.advantco.base.variablesubstitution,com
.advantco.sugarcrm.core,com.advantco.sugarcrm.core.error,com.advantco
.sugarcrm.core.object,com.advantco.sugarcrm.core.object.metadata";ver
sion="1.0.0",com.advantco.sugarcrm.core.error;version="1.0.0",com.adv
antco.sugarcrm.core.iface;uses:="com.advantco.sugarcrm.core.error,com
.advantco.sugarcrm.core.object";version="1.0.0",com.advantco.sugarcrm
.core.object;uses:="com.advantco.base,com.advantco.base.mime,com.adva
ntco.base.net,com.advantco.sugarcrm.core.error,com.advantco.sugarcrm.
core.iface,com.advantco.sugarcrm.core.object.metadata,com.advantco.su
garcrm.core.rest.parser.object,com.advantco.sugarcrm.core.util";versi
on="1.0.0",com.advantco.sugarcrm.core.object.metadata;uses:="com.adva
ntco.sugarcrm.core.object,com.advantco.sugarcrm.core.rest.parser.obje
ct";version="1.0.0",com.advantco.sugarcrm.core.rest;uses:="com.advant
co.base.logging,com.advantco.sugarcrm.core,com.advantco.sugarcrm.core
.object";version="1.0.0",com.advantco.sugarcrm.core.rest.auth;uses:="
com.advantco.base.logging,com.advantco.rest.auth.oauth2,com.advantco.
sugarcrm.core,com.advantco.sugarcrm.core.error,com.advantco.sugarcrm.
core.object";version="1.0.0",com.advantco.sugarcrm.core.rest.metadata
;uses:="com.advantco.base.logging,com.advantco.sugarcrm.core,com.adva
ntco.sugarcrm.core.error,com.advantco.sugarcrm.core.object,com.advant
co.sugarcrm.core.object.metadata,org.json";version="1.0.0",com.advant
co.sugarcrm.core.rest.op;uses:="com.advantco.base,com.advantco.base.l
ogging,com.advantco.base.mime,com.advantco.base.net,com.advantco.rest
,com.advantco.rest.auth.oauth2,com.advantco.sugarcrm.core.error,com.a
dvantco.sugarcrm.core.object,com.advantco.sugarcrm.core.object.metada
ta,com.advantco.sugarcrm.core.rest,com.advantco.sugarcrm.core.rest.pa
rser.object,org.json";version="1.0.0",com.advantco.sugarcrm.core.rest
.op.v10;uses:="com.advantco.base.logging,com.advantco.base.mime,com.a
dvantco.sugarcrm.core.error,com.advantco.sugarcrm.core.object,com.adv
antco.sugarcrm.core.rest.op,org.json";version="1.0.0",com.advantco.su
garcrm.core.rest.parser;uses:="com.advantco.base.logging,com.advantco
.sugarcrm.core.error,com.advantco.sugarcrm.core.object,com.advantco.s
ugarcrm.core.rest";version="1.0.0",com.advantco.sugarcrm.core.rest.pa
rser.chn;uses:="com.advantco.base.logging,com.advantco.sugarcrm.core.
error,com.advantco.sugarcrm.core.object,com.advantco.sugarcrm.core.re
st.parser";version="1.0.0",com.advantco.sugarcrm.core.rest.parser.obj
ect;version="1.0.0",com.advantco.sugarcrm.core.rest.parser.xml;uses:=
"com.advantco.base.logging,com.advantco.sugarcrm.core.error,com.advan
tco.sugarcrm.core.object,com.advantco.sugarcrm.core.object.metadata,c
om.advantco.sugarcrm.core.rest.parser,com.advantco.sugarcrm.core.rest
.parser.object,com.advantco.sugarcrm.core.xml";version="1.0.0",com.ad
vantco.sugarcrm.core.rest.service;uses:="com.advantco.base.logging,co
m.advantco.sugarcrm.core.error,com.advantco.sugarcrm.core.iface,com.a
dvantco.sugarcrm.core.object,com.advantco.sugarcrm.core.rest";version
="1.0.0",com.advantco.sugarcrm.core.result;uses:="com.advantco.base.l
ogging,com.advantco.sugarcrm.core,com.advantco.sugarcrm.core.error,co
m.advantco.sugarcrm.core.object,javax.xml.stream";version="1.0.0",com
.advantco.sugarcrm.core.result.v10;uses:="com.advantco.base.logging,c
om.advantco.sugarcrm.core.error,com.advantco.sugarcrm.core.object,com
.advantco.sugarcrm.core.object.metadata,com.advantco.sugarcrm.core.re
sult,javax.xml.stream";version="1.0.0",com.advantco.sugarcrm.core.ser
vice;uses:="com.advantco.base.logging,com.advantco.sugarcrm.core.ifac
e,com.advantco.sugarcrm.core.object";version="1.0.0",com.advantco.sug
arcrm.core.test;uses:="com.advantco.sugarcrm.core.error,com.advantco.
sugarcrm.core.object";version="1.0.0",com.advantco.sugarcrm.core.util
;uses:="com.advantco.base,com.advantco.base.mime,com.advantco.rest,co
m.advantco.sugarcrm.core,com.advantco.sugarcrm.core.error,com.advantc
o.sugarcrm.core.object,com.advantco.sugarcrm.core.object.metadata,com
.advantco.sugarcrm.core.rest.parser.object,javax.activation,javax.xml
.stream,org.json";version="1.0.0",com.advantco.sugarcrm.core.xml;uses
:="com.advantco.sugarcrm.core.error";version="1.0.0"
Bundle-Name: sugarcrm-core
Bundle-Version: 1.0.0
Build-Jdk: 1.7.0_71
输出
com.advantco.base
com.advantco.base.logging
com.advantco.base.mime
com.advantco.base.net
com.advantco.base.variablesubstitution
com.advantco.rest
com.advantco.rest.auth
com.advantco.rest.auth.oauth2
com.advantco.sugarcrm.core
com.advantco.sugarcrm.core.adapter
com.advantco.sugarcrm.core.error
com.advantco.sugarcrm.core.iface
com.advantco.sugarcrm.core.object
com.advantco.sugarcrm.core.object.metadata
com.advantco.sugarcrm.core.rest
com.advantco.sugarcrm.core.rest.auth
com.advantco.sugarcrm.core.rest.metadata
com.advantco.sugarcrm.core.rest.op
com.advantco.sugarcrm.core.rest.op.v10
com.advantco.sugarcrm.core.rest.parser
com.advantco.sugarcrm.core.rest.parser.object
com.advantco.sugarcrm.core.rest.parser.xml
com.advantco.sugarcrm.core.rest.service
com.advantco.sugarcrm.core.result
com.advantco.sugarcrm.core.result.v10
com.advantco.sugarcrm.core.service
com.advantco.sugarcrm.core.util
com.advantco.sugarcrm.core.xml
javax.activation
javax.crypto
javax.crypto.spec
javax.mail
javax.xml.bind
javax.xml.parsers
javax.xml.stream
javax.xml.transform
javax.xml.transform.dom
javax.xml.transform.stream
org.apache.commons.codec.binary
org.apache.commons.collections4.map
org.apache.commons.httpclient
org.apache.commons.httpclient.util
org.json
解决方案
编辑:由于 OP 发布了一些不同的输出,所以现在添加这个解决方案。
awk '{while(match($0,/com\.[^;]*/)){print substr($0,RSTART,RLENGTH);$0=substr($0,RSTART+RLENGTH)}}' Input_file
请您尝试以下操作。
sed 's/;[^)]*)//g;s/)",/ /g;s/",$//;s/",/\n/g' Input_file
输出如下。
com.adntco.aws.core
com.adntco.aws.core.adapter
推荐阅读
- database - 第一范式识别主键的具体步骤是什么
- hyperledger-fabric - 了解 Hyperledger Fabric 背书策略逻辑和对等节点类型
- c# - 为什么我的代码在项目中找不到路径?
- mysql - 仅将表数据从 MSSQL 迁移到 MySQL
- python - 如何使用终端运行 py 文件并写入文件
- java - 为什么流量较高时vmop(Java GC选项)会增加
- mysql - Mysql Group Replication--为什么一个组中MySQL服务器的最大数量是9台服务器
- node.js - 如何将带有表单的图像从 ionic 发送到 node.js?
- c++ - 我应该如何将一个值插入另一个值的“中间”?
- azure - 如何获取 Cosmos DB 中存在的数据库及其状态的吞吐量值?