适用于Solaris,Linux和HPUX的sed命令

适用于Solaris,Linux和HPUX的sed命令,第1张

概述适用于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命令所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/langs/1159817.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存