使用 sed 或 awk 删除空格后跟逗号
remove white spaces followed by any till comma using sed or awk
我的文件包含以下逗号分隔值
dev.visualwebsiteoptimizer.com 80,versioncheck-bg.addons.mozilla.org 80, ,frontweb-stg.shoprunner.com 443,p.typekit.net 443,sra.s-9.us 443,www.shoprunner.com 443,cdn.optimizely.com 443,logx.optimizely.com 443,sra.s-9.us 443,ocsp.digicert.com 443,code.jquery.com 443,ocsp2.globalsign.com 443,dev.visualwebsiteoptimizer.com 443,versioncheck-bg.addons.mozilla.org 443, ,
很少有地方是空的 space 后跟逗号
我想要以下输出:
dev.visualwebsiteoptimizer.com,versioncheck-bg.addons.mozilla.org,,frontweb-stg.shoprunner.com,p.typekit.net,sra.s-9.us,www.shoprunner.com,cdn.optimizely.com,logx.optimizely.com,sra.s-9.us,ocsp.digicert.com,code.jquery.com,ocsp2.globalsign.com,dev.visualwebsiteoptimizer.com,versioncheck-bg.addons.mozilla.org,,
理想情况下,我想删除白色spaces 直到我看到逗号,
我试过
sed -i 's/^[[:space:]]*,/,/g' sample.file
但没有任何优势。
如有任何帮助,我们将不胜感激
首先,^
表示行首。删除它。
其次,您似乎想删除每个 space 和后面的逗号之间的所有非逗号,但您没有将其包含在模式中。
sed -i 's/[[:space:]][^,]*,/,/g' sample.file
awk '{gsub(/[ ]+/,"")gsub(/[0,3-8]/,"")}1' file
第一个 gsub 删除 space,下一个删除不需要的数字。
一个perl
解决方案:
perl -i -pe 's/\s+\d*(?=,)//g' file
Perl 的启动成本高于 Sed 或 Awk,但 Perl 更强大的正则表达式支持通常使事情变得更容易:
\s
是匹配whitespace(制表符,space,换行符)的便捷快捷方式;同样,\d
是 [0-9]
.
的快捷方式
+
因为一个或多个实例重复符号始终可用,而要在 [=16= 中 可移植地 使用它] 你必须使用笨拙的 \{1,\}
结构。
(?=...)
是一个前瞻断言,允许查找子表达式而不将其包含在匹配中。
我的文件包含以下逗号分隔值
dev.visualwebsiteoptimizer.com 80,versioncheck-bg.addons.mozilla.org 80, ,frontweb-stg.shoprunner.com 443,p.typekit.net 443,sra.s-9.us 443,www.shoprunner.com 443,cdn.optimizely.com 443,logx.optimizely.com 443,sra.s-9.us 443,ocsp.digicert.com 443,code.jquery.com 443,ocsp2.globalsign.com 443,dev.visualwebsiteoptimizer.com 443,versioncheck-bg.addons.mozilla.org 443, ,
很少有地方是空的 space 后跟逗号
我想要以下输出:
dev.visualwebsiteoptimizer.com,versioncheck-bg.addons.mozilla.org,,frontweb-stg.shoprunner.com,p.typekit.net,sra.s-9.us,www.shoprunner.com,cdn.optimizely.com,logx.optimizely.com,sra.s-9.us,ocsp.digicert.com,code.jquery.com,ocsp2.globalsign.com,dev.visualwebsiteoptimizer.com,versioncheck-bg.addons.mozilla.org,,
理想情况下,我想删除白色spaces 直到我看到逗号,
我试过
sed -i 's/^[[:space:]]*,/,/g' sample.file
但没有任何优势。
如有任何帮助,我们将不胜感激
首先,^
表示行首。删除它。
其次,您似乎想删除每个 space 和后面的逗号之间的所有非逗号,但您没有将其包含在模式中。
sed -i 's/[[:space:]][^,]*,/,/g' sample.file
awk '{gsub(/[ ]+/,"")gsub(/[0,3-8]/,"")}1' file
第一个 gsub 删除 space,下一个删除不需要的数字。
一个perl
解决方案:
perl -i -pe 's/\s+\d*(?=,)//g' file
Perl 的启动成本高于 Sed 或 Awk,但 Perl 更强大的正则表达式支持通常使事情变得更容易:
\s
是匹配whitespace(制表符,space,换行符)的便捷快捷方式;同样,\d
是[0-9]
. 的快捷方式
+
因为一个或多个实例重复符号始终可用,而要在 [=16= 中 可移植地 使用它] 你必须使用笨拙的\{1,\}
结构。(?=...)
是一个前瞻断言,允许查找子表达式而不将其包含在匹配中。