【发布时间】:2017-12-15 18:31:46
【问题描述】:
我有一个 java 文件,其中在 Logger 的末尾有以下行,CRLF。
private static final Logger logger = LoggerCRLF
.getLogger(MyClass.class);
我想要做的是在我的文件中的 Logger 之后删除 CRLF,并将该行加入一行,如下所示。这不应该影响我文件中的其他 CRLF。
private static final Logger logger = Logger.getLogger(MyClass.class);
我尝试了下面的命令来做到这一点
find . -name *.java -exec sed -i 's/Logger\r\n//g' {} \;
但我意识到 SED 一次读取一行而没有尾随换行符,所以这不起作用。在 man 页面中,我能够找到一些命令,例如 N、P 和 D,但我找不到让它工作。
那么问题是如何根据文件中的上述模式删除一个 CRLF?
【问题讨论】:
-
this answer 呢?
-
@cxw,我的问题是关于 SED 命令而不是 TR 或 VIM 文本编辑器。在您的示例中 -d 的 Tr 将删除所有标记
-
@Vahid 您可以添加预期的输出以清楚起见吗? (例如:如果您还想删除下一行中的空白)....另外,您可以有两行以
Logger\r\n结尾的连续行吗?我想这就是你要找的东西:sed '/Logger\r/{N;s/\r\n[[:blank:]]*//}' -
@Vahid 我正在查看该答案底部的
sed命令。