【发布时间】:2018-05-02 10:46:01
【问题描述】:
我使用的是 macOS High Sierra,我在使用 sed 时遇到了一些问题, 在谷歌和这个网站上呆了一天之后,我诚实地尝试了我能想到的一切,并得到了建议。
我有一个包含 3 行的 example.txt 文件。 第1行 线2 第3行
这 3 行可以是任何东西,我不知道它们是什么。 (设想) 在某些时候,我确实知道这条线会是什么。
我希望实现的只是使用“随便”的在线人,基本上说: 在该文件中,将第 2 行替换为新数据。
sed -i "2s/.*/$NEW_DATA/" "$FILENAME"
这应该可以,但在 macOS 上,这不行。
sed -ie "2s/.*/$NEW_DATA/" "$FILENAME"
注意 e?这里有人建议添加一个 e,是的,这有效..但这意味着它在 .txt 后面添加了 e。我最终得到了 2 个文件,example.txt 和 example.txte
sed -i'' "2s/.*/$NEW_DATA/" "$FILENAME"
注意 -i 后面的 '',是的,没有空格?这也应该有效。 它没有,它会抱怨命令 c 需要 \
我可以继续,但请求很简单:
在 macOS 上,在 bash shell 脚本中,我如何简单地将 .txt 文件中的指定文本行替换为全新的文本行——不知道之前的文本行是什么?
如果这可以是带有 awk 或其他东西的简单 macOS one liner,那很好。它不必是 sed。但是当我搜索这个网站时,在这方面它似乎是推荐的。
【问题讨论】:
-
如果你使用 -i'' -e,行为会改变吗?我一直认为 -e 是隐含的。