从记录的文件名中删除空格

时间:2017-03-14 14:43:46

标签: linux sed

在Linux机器上,我试图从一些详细列出文件的日志条目中删除空格。

IE:/ path / to / some / file有spaces.file

然而,在这些行中还有很多其他文本,我希望保留空白以保持一致的格式。

我尝试使用sed,但我对如何构建正则表达式非常不熟悉。

sed -e 's/ *\/\.//g' file.log

2 个答案:

答案 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