我不太确定应该如何以良好的方式进行文本处理,所以让我问一下。
我有这个文件:~/.config/mpv/input.conf
可能包含其他选项以及v disable
.
如果我想从文件中删除该行,我想我可以这样做:
grep -v -q -F 'v disable' input.conf; echo $?
1
其中 - 如果文件像现在一样不包含任何其他内容,它将返回 1 (手册页显示1
- “未选择任何行。”),这让我很困扰,因为我无法运行简单的if-statement
.
所以我必须$?
在命令之后存储,然后检查它是否大于 1 是否有错误。
另外,我不清楚就地替换文件是否是一个好主意:
grep ... input.conf > input.conf
如果还有其他方法,请告诉我。另外,如果我的部分建议是正确的,请告诉我。
谢谢,干杯。
通常,
grep
当有一行或多行与您提供的 RE 匹配时,将返回 0(真)。该-v
标志反转了这一点,因此grep
将认为所有与 RE 不匹配的行都是成功的。在这种情况下,唯一一次匹配失败的情况v
是源代码中只有一行并且它与您的 RE 完全对应。因此,删除匹配行并返回已应用更改的指示会稍微复杂一些:
Valentin Bajrami在评论中提出了一个替代建议,用于
ed
直接就地修改文件:请注意,在这种情况下,匹配字符串被视为 RE 而不是文字。