Articles of sed

这个sed命令是如何工作的?

我需要在两个文本片段之间打印文本。 我find了这样的例子,这正是我想要的,但我不明白它是如何完成的。 谷歌search是困难的,因为命令不包含字母) sed -n '/hostname/,/$/p' /tmp/ambari-agent.ini 主机名=本地主机 据我所知,这里我在hostname和行结束之间打印文本。 p选项打印模式输出。 但为什么我在这里有三个小组,这里昏迷是什么意思?

如何使用sed或grep从文件中获取单词

我正在尝试从文件中提取一段文本以用作下一个命令的input。 这个词总是以“JID_”开始,然后是一些随机数字/字符。 例如 : SelectorSet Selector: InstanceID = JID_001264193601, __cimnamespace = root/dcim 我想给这个string分配一个variables$ JID。 我如何从行中拉出它? sed或grep最好,但任何方法都很好。

Sed在Bash困难的模式

我有一个复杂的string,我需要search和replace 我需要replace: common.loader=${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar,/var/lib/tomcat6/common/classes,/var/lib/tomcat6/common/*.jar 同 #common.loader=${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar,/var/lib/tomcat6/common/classes,/var/lib/tomcat6/common/*.jar common.loader=${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar,/var/lib/tomcat6/common/classes,/var/lib/tomcat6/common/*.jar,${catalina.home}/lib/ext,${catalina.home}/lib/ext/*.jar 恐怕我不能使用python或任何其他脚本语言(我的bash脚本目前有100多行) 到目前为止,我有一个包含string的testing文件,我试图使用这个sed命令: #!/bin/sh sed -i 's:common.loader=${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar,/var/lib/tomcat6/common/classes,/var/lib/tomcat6/common/*.jar:#common.loader=${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar,/var/lib/tomcat6/common/classes,/var/lib/tomcat6/common/*.jar\ncommon.loader=${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar,/var/lib/tomcat6/common/classes,/var/lib/tomcat6/common/*.jar,${catalina.home}/lib/ext,${catalina.home}/lib/ext/*.jar:' workers.properties 没有错误被抛出,但没有被replace。 我需要逃避string内的某些字符吗? 任何build议将有所帮助,谢谢! 更新:我使用的命令类似于乔的: sed -i -e 's:^\(common.loader=${catalina.base}/lib,${catalina.base}/lib/\*\.jar,${catalina.home}/lib,${catalina.home}/lib/\*\.jar,/var/lib/tomcat6/common/classes,/var/lib/tomcat6/common/\*\.jar$\):#\1\n\1,${catalina.home}/lib/ext,${catalina.home}/lib/ext/*.jar:' /etc/tomcat6/catalina.properties

recursionsearch并replace多个文件types的内容

我有成千上万的网页文件(*。php,*。htm,* .html等),包含一个绝对path( http://site.com/sites/etc )。 我需要扫描不同文件types的目录和所有子目录,并在这些文件中,将我的绝对path修改为我select的相对path,然后保留文件的其余部分。 它不能改变任何其他绝对URL的path。 我已经检查了已经发布在这个问题上的类似问题,但似乎没有直接解决这个问题。 有什么build议么? 谢谢!

从复杂的日志中收集IP

我有一个关于使用更高级的grep,awk,sed的问题。 我有一个专有MTA的日志文件,它包含一个string中的IP,由[redacted]^~xxxx^[redacted]分隔。 到目前为止,我所有的gre,,aw,和se has都没有让我走得很远。 该日志文件中有331520行。 我的目标是简单地刷出ip,然后用sed做一个for循环,以sed的/ $ i / redacted'。 我包括一个日志条目的样本。 如果你们有任何想法,我会非常感激。 Jun 4 15:21:52 host.name mta-name: 13388^~88/CC-04671-FCA0DCF4^~D^~<redactedmessageid>^~@^[email protected]^~redacted.hostname^~000.00.000.000^~port^~esmtp^~^~external_routing_nobounce^~0^~0.51^~subjectofmessage^~250 2.6.0 <redactedmessageid> [InternalId=2178458] Queued mail for delivery

ssh远程命令执行引用

我发现这个解决scheme适用于我,但我不明白它是如何工作的,因为sed命令在单引号中包含了自己的参数,并且整个ssh命令也在单引号中传递。 这是从OSX(bsd)运行。 ssh -t -p 22 root@thehost 'for user in $(/bin/ls -A1 /var/cpanel/users) ; do if grep -q RS=paper /var/cpanel/users/${user}; then sed -i 's/^RS=paper_lantern$/RS=x3/' /var/cpanel/users/${user}; fi; done' 有人可以向我解释为什么这个工作,为什么我不需要逃避sed命令的单引号 – 我找不到任何地方的参考? 谢谢。

pipe道到命令之前的前缀标准输出

在Linux(Debian)上,如何在将命令的标准输出连接到第二个命令之前,将一个或多个命令的标准输出作为前缀? 这是使用sendmail邮寄命令的输出,如下所示: pflogsumm <args> | sendmail <address> 我不能用这种方式指定主题行,因为sendmail会从input的input中提取标题字段。 因此,我想使用sed前缀pflogsumm输出。 谢谢。 /大卫

在shell脚本中使用sed来replace文件中的IP地址

我有一个脚本,发现一个文件中的string用一个新的stringreplace它。 $ sed -i 's/$old_string'/'$new_string'/g' $FILENAME 现在我需要条件是一个正则expression式,也检查旧的string是否跟随任何东西,但数字。 我试过这个,但没有奏效: $ sed -i -r 's/$old_string(^[0-9])+/$new_string/g' $FILENAME 任何想法?

是否有相当于awk -F'的sed:“{print $ 2}”?

也许有人可以帮助我find(最简单的)相当于下面的这个awk命令与sed: echo "first:second:third"|awk -F ':' '{print $2}' second

sed:如何在匹配行的开头插入注释

我试图编写一个脚本,每次启动一个新的EC2实例时,将在/ etc / sudoers中注释掉以下行: Defaults requiretty 我假设这样做的最好方法是内联sedsearch和replace或search和插入。 问题是在Defaults和requiretty之间可能会有1+个空格/制表符。 什么是高效的sed解决scheme?