在Linux机器上,我试图从一些详细列出文件的日志条目中删除空格。
IE:/ path / to / some / file有spaces.file
然而,在这些行中还有很多其他文本,我希望保留空白以保持一致的格式。
我尝试使用sed,但我对如何构建正则表达式非常不熟悉。
sed -e 's/ *\/\.//g' file.log
答案 0 :(得分:0)
使用sed,首先找到/
后删除空格:
sed ':a;s/\(\/[^ ]*\) /\1/;ta;' file.log
工作原理:
\(\/[^ ]*\)
:在第一个/
之后,非空格字符被捕获到下一个空格(但不包括)。使用反向引用输出捕获组。ta
:如果之前的替换成功,则ta
循环标记a
以处理剩余空格修改强>
要删除/
到下一个.
的空格:
sed ':a;s/\(\/[^ .]*\) /\1/;ta;' file.log
或在ERE模式下避免转义括号:
sed -r ':a;s/(\/[^ .]*) /\1/;ta;' file.log
答案 1 :(得分:0)
GNU sed
sed -r ':a;s#(.*/.*) #\1#;ta' file.log