在 AIX 服务器中使用 Sed -i 选项。函数无法解析 aix
Posted
技术标签:
【中文标题】在 AIX 服务器中使用 Sed -i 选项。函数无法解析 aix【英文标题】:Using Sed -i option in AIX servers. function cannot be parsed 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” 讨论了awk
、sed
和 grep
的所有变体,并展示了如何克服 Perl 的差异。
【参考方案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'
【讨论】:
以上是关于在 AIX 服务器中使用 Sed -i 选项。函数无法解析 aix的主要内容,如果未能解决你的问题,请参考以下文章
AIX 的 XL 编译器的 -qfuncsect 选项的 gcc 等效选项是啥?