【发布时间】:2024-07-16 02:10:01
【问题描述】:
免责声明:我对 sed 的经验很少。
我正在尝试通过使用 bash 脚本自动执行一项有些繁琐的任务,其中一个步骤是从 Maven pom.xml 文件中删除一行,我正在尝试使用以下 sed命令:
sed -i '/<module>'"${MODULE_NAME}"'<\/module>/d' ./pom.xml
它似乎工作正常。问题是 pom 的所有行都受此影响,因为 git diffcall 显示已添加 1,680 行并删除了 1,681 行。
这显然是一种痛苦,因为它使代码审查者很难发现一行差异。有没有办法让 sed 执行此删除而不影响文件中的其他行?
编辑:在 IntelliJ 中打开项目时,差异被正确识别为一行。此外,sed 似乎已将换行样式从 CRLF 更改为 LF(是的,我在 Windows 上)。这是否足以触发 git 中的所有行不同?
【问题讨论】:
-
您可以粘贴要修改的文件吗?
-
对不起,没有。它是机密的,但结构是这样的:
<project><modules><module>MODULE_NAME</module></modules></project> -
我很感兴趣,如果受影响的 1680 行仅是
<module>行,或者可能是因为您使用的是 Windows 而导致的问题,并且您的脚本以某种方式更改了行尾,或者您对行尾配置了错误的 git,等 -
与
sed没有任何关系。这是一个 Git 问题。 -
不是
sed改变了文件中的行尾吗?还是您的意思是 Git 将不同的行尾视为文件中的差异是 Git 问题?