概述适用于Solaris,Linux和HPUX的sed命令
我需要改变一个configuration文件中的指令,并在linux中工作,但在Solaris中,它说命令乱码。
这是指令
enable-cache passwd yes
我需要简单地将“是”更改为“否”。 我该如何处理适用于Solaris,HPUX和linux的sed?
这是在linux中工作的sed命令。 Solaris不喜欢-r
如何在bash中确定空白DVD上的可用存储空间量?
对于C ++应用程序,什么可能导致HP-UX和liNUX的返回值有所不同?
GCC编译器是否支持经典的C ++?
脚本中的文件名最后修改dateshell
在Unix Ksh shell中将string值转换为纪元时间
sed -r \’s/^([[:space:]]*check-files[[:space:]]+passwd[[:space:]]+)yes([[:space:]]*)$/1no2/\’ inputfile
最终目标是将此命令放在脚本中并在整个企业中运行。
谢谢
格雷格
我昨天还发布了一些类似linux的东西,但不是其他的东西。
简单的C代码可以在HPUX上正常工作,但是linux上的段错误。 为什么?
在HP-UX和linux上展开堆叠
awk在HP-UX上的END块行为
如何在单引号包围的awk语句中使用单引号?
在shell脚本中使用AWK。 惠普unix
Solaris具有/ usr / bin / sed和/ usr / xpg4 / bin / sed。 这些都不支持-r选项,linux的哪个选项是使用扩展正则表达式。 sed在Solaris中没有任何选项来设置这样的正则表达式。 如果你想更简单的可移植性,你可以使用其他工具,特别是awk。 或者你将不得不使用两种正则表达式,一种是-r和一个扩展正则表达式,一种不带-r和一个不同的正则表达式。 而且您可能只想在Solaris机器上指定/ usr / xpg4 / bin / sed:
#!/bin/bash sun=`expr index Solaris $(uname -a)` if [ $sun -ne 0 ] ; then /usr/xpg4/bin/sed [longer regex here ] else /usr/bin/sed -r [ extended regex here ] fi
这不完全等同于:space:匹配更多的字符,但我认为只有空间和制表符预计在您的文件。 我只使用标准的shell和sed命令,所以这应该在Solaris,linux和HP-UX上运行:
space=$(printf \” t\”) sed \’s/^([\’\”$space\”\’]*check-files[\’\”$space\”\’]+passwd[\’\”$space\”\’]+)yes([\’\”$space\”\’]*)$/1no2/\’ inputfile
请注意,您的脚本与您的示例指令不匹配,因为它期望check-files但是被赋予了enable-cache 。
GNU [[:space:]]通常相当于[ t] 。 你需要逃避括号。 和+不支持。 所以用这些替换,你的工作sed命令变成:
sed \’s/^([ t]*check-files[ t][ t]*passwd[ t][ t]*)yes([ t]*)$/1no2/\’ inputfile
进一步的说明:旧的sed\’s没有-i选项来执行就地更改,因此您可能首先必须将目标复制到一个临时文件,然后将sed应用于该目标,将输出重定向到目标。
总结
以上是内存溢出为你收集整理的适用于Solaris,Linux和HPUX的sed命令全部内容,希望文章能够帮你解决适用于Solaris,Linux和HPUX的sed命令所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
请登录后查看评论内容