【问题标题】:Using Sed -i option in AIX servers. function cannot be parsed aix在 AIX 服务器中使用 Sed -i 选项。函数无法解析 aix
【发布时间】:2021-03-21 15:34:05
【问题描述】:

我正在尝试解析 AIX 服务器中的文件。我可以在 Ubuntu 中命名。

由于-i 选项不起作用,我使用了一个临时文件并将其重命名为原始文件。请让我知道我在哪里遗漏了一些东西。

我必须在文件中找到一个模式,并在该模式的上方或下方添加一行。

sed '/ServiceNow (TAM):/i myline1' filename > temp_file && mv temp_file filename

实际使用的命令:

sed '/ServiceNow (TAM)/i servicenow.test..ersngrouplist.0=Test' /itim/data/testfile > temp_properties && mv temp_properties /itim/data/testfile

错误: sed: Function /ServiceNow (TAM)/i servicenow.test..ersngrouplist.0=无法解析测试。

请帮助我如何更改此命令以获取

我的期望:

myline1
ServiceNow (TAM): //模式
myline2

【问题讨论】:

  • 抱歉,信息不够。我们需要一些 actual 示例数据、您键入的 actual 命令以及 actual 错误/输出。理想情况下,尽可能简短 (minimal reproducible example)。发布伪代码 ("pattern" / "new_line" 并说“它失败了”并不能告诉我们任何事情,我们无法以这种方式为您提供帮助。
  • 感谢您的建议。我已经更新了实际命令。现在会有帮助吗
  • 这能回答你的问题吗? Insert newline using sed.
  • 只是一个想法...在使用 "awkward" Unix 平台时(不想让任何人感到羞耻,但我的意思是 HP-UX、AIX 和 Tru64)我通常发现 Perl 在它们之间更加一致,并一次又一次地求助于 Perl 以获得全面有效的解决方案。 Tim Maher 的优秀著作 “Minimal Perl” 讨论了 awksedgrep 的所有变体,并展示了如何克服 Perl 的差异。

标签: linux sed scripting aix


【解决方案1】:

问题是sed 的POSIX 版本不接受i 命令在同一行上带有附加文本。您需要在i 之后放置一个\,并将要插入的文本放在下一行。

sed '/ServiceNow (TAM)/i\
servicenow.test..ersngrouplist.0=Test'

来自 GNU sed 的错误消息比 AIX 的有用得多!

$ sed --posix '/ServiceNow (TAM)/i servicenow.test..ersngrouplist.0=Test'
sed: -e expression #1, char 21: expected \ after `a', `c' or `i'

【讨论】:

    猜你喜欢
    • 2011-11-06
    • 2018-03-17
    • 2021-06-20
    • 2021-02-08
    • 2014-09-03
    • 2014-11-09
    • 2018-06-19
    • 2010-11-01
    • 2018-06-14
    相关资源
    最近更新 更多