Articles of awk

Yum命令来降级软件包

我需要在服务器上降级php,并find下面的命令。 一些东西似乎是错误的语法。 yum downgrade $(rpm -qa –qf "%{NAME} " | \ grep -v ioncube | grep ^php | awk '{print $1"-5.2.17"}') 我收到以下错误信息: Error: Need to pass a list of pkgs to downgrade usage: yum [options] COMMAND

如何整理sar -d磁盘输出

sar -D输出 – 我想要一个合适的命令与压力-hdd一起运行,但是这是sar -D10给出的输出。 我用awk |'NR > 1 {printf "%4s%8s%8s\n",$13,$14,$15}'和awk 'NR > 1 {OFS="\t"; print $13,$14,$15}' awk 'NR > 1 {OFS="\t"; print $13,$14,$15}'但是输出如下面的第一个实例一样混乱。 我怎样才能把它过滤得更像我在ibm站点得到的第二个输出? 4296roryhbmc 1944 rootal, 3361 root Tasks: 326total, Cpu(s):25.7%us,54.1%sy, Mem:2041916k Swap:1046524kt 0 | 0 0 | 0 0 | 268 957 34 17 49 0 0 0| 0 0 | 0 […]

如何编写一个shell脚本来从文件中的一个位置进行search,而不是从文件开头再次开始

我正在尝试编写一个shell脚本,以便在使用for循环的数百万行的大文件中查找重复性单词后存储的值。 find重复的单词之后,我如何让脚本在文件中的当前行之后开始search,以便循环迭代时不会从文件的开始处开始search。 简单地说,如何在文件中查找当前行,以及如何在循环重新迭代时从该行开始search,而不是从头开始search。 我可以运行多less个并行控制器,有没有限制,或者我们需要运行,取决于我们的CPU和RAM的利用率。

linux或solaris与uniq语法匹配文件

如何匹配以stringOS_PATCH开头并以.gz结尾的所有文件 备注 – 解决scheme必须适合Linux和Solaris操作系统 这个任务可以通过查找命令,也可以用正则expression式或任何其他想法,例如awk 例如 OS_PATCH-ver.4.577.gz OS_PATCH-pilot-install.gz OS_PATCH.upgrade-patch.gz OS_PATCH_generig-patch.gz . . . .

tail-pipe-awk脚本,在Centos上很好,但在Ubuntu上很奇怪

我在CentOS上编写了一个脚本,现在我正试图在Ubuntu上运行它,它的行为出乎意料。 这里有一些像我在bash下运行的脚本: sudo tail -F /var/opt/my-application/log/my-application.log | awk ' BEGIN { ORS=" " } { if ($8 ~ /MATCH-TEXT/) { # do a whole bunch of stuff here # like look in /proc and calculate CPU and interface stats }; }; } ' 以前,当我在日志的$ 8字段中出现一行MATCH-TEXT时,所有的“做了一大堆东西”(脚本的肉)会发生,我会看到输出。 我的应用程序每秒产生一次MATCH-TEXT行(有时更多,有时更less),这个脚本的输出也是如此。 但是现在,当我启动这个脚本的时候,我很久没有输出了,然后我得到了30行输出。 看起来脚本正在对接收到的日志行进行排队,然后快速执行几次,因为CPU和界面上的计算对于“自一秒钟之前的一小部分时间”而不是“自一秒钟以前”起就是正确的。 更奇怪的是,将awk命令的所有内容注释掉,将其replace为“print $ 0”(将整个脚本转换为令人尴尬的grep命令)会产生相同的结果。 所以我相信这是系统执行脚本的方式,而不是脚本本身。 与此同时,在另一个窗口中,一个普通的“sudo tail -F […]

如何在Apache中使用AWK生成带宽报告

我有我的Apache日志设置像这样: LogFormat "%v %t %I %O" billing 我怎样才能使用AWK生成一个报告,显示每个虚拟主机的总带宽(接收+发送),以MB为单位? 以下是一个日志输出示例: bob.com [3 JULY 2013] 903 299 bob.com [8 JULY 2013] 192 138 luke.com [12 JULY 2013] 34 123 bob.com [19 JULY 2013] 616 213 luke.com [22 JULY 2013] 23 74 我正在寻找一个输出,为bob.com和luke.com总结第三和第四列,而没有真正指定域名,因为我有50多个域名,不想维护一个列表。 打印出来更加容易。

如何从awk结果中replacestring?

我有一个包含多个replaceme的JSON文件。 我只想根据在上面几行find的特定string来replace一个事件。 例如, […] "title" : { "Propertie1" : "xxxx", "Propertie2: "replaceme" } "title2" : { "Propertie1" : "xxxx", "Propertie2: "replaceme" } "title" : { "Propertie1" : "xxxx", "Propertie2: "replaceme" } "title2" : { "Propertie1" : "xxxx", "Propertie2: "replaceme" } […] 在这个例子中,我只想replaceme title2 。 用awk 'title2/,/replaceme/' myFile我可以find我的JSON文件的一部分。 我是否也需要执行一个sed命令,但我不知道如何,或者甚至可能这样?

如何使用sed来更改匹配行中的最后一个字符

如何使用sed更改匹配行中的最后一个字符? 例如:/ etc / network / interfaces auto eth0 iface eth0 inet static address 150.0.3.50 netmask 255.255.255.0 network 150.0.3.0 gateway 150.0.3.6 auto eth….. 我怎样才能改变网关的主机八位字节? 我有很多机器来做这件事,每个人都在不同的networking,但网关的八位字节总是相同的。

多行成单行输出到logging器

我有一个日志文件,其中的数据条目如下每个条目以时间开始: time: 20170509123420 dn: uid=abc,ou=People,dc=test,dc=example,dc=com changetype: modify replace: passwordAllowChangeTime replace: passwordExpirationTime replace: passwordRetryCount replace: pwdpolicysubentry replace: modifiersname modifiersname: uid=admin,ou=administrators,ou=topologymanagement,o=netscaperoot replace: modifytimestamp modifytimestamp: 20170509113420Z time: 20170509123621 dn: cn=nsPwPolicyContainer,dc=test,dc=example,dc=com changetype: add objectClass: nsContainer objectClass: top cn: nsPwPolicyContainer creatorsName: uid=admin,ou=administrators,ou=topologymanagement,o=netscaperoot modifiersName: uid=admin,ou=administrators,ou=topologymanagement,o=netscaperoo 现在我想打印为单行,只有时间之间的条目: 例如,时间之后,我想把所有logging打印成单行,所以在我的情况下,它应该打印 time: 20170509123420 dn: uid=abc,ou=People,dc=test,dc=example,dc=com changetype: modify replace: passwordAllowChangeTime – replace: passwordExpirationTime – replace: passwordRetryCount […]

需要使用正则expression式/ grep awk / sed / perl模式的帮助

从grep输出示例文件 file1:my $dbh = DBI->connect("dbi:mysql:$database_name", $DB_USER, $DB_PASSWD) file2:($dbc,$rc) = mysql_connect($mysql_host,$mysql_user,$mysql_password); awk模式应该从第1行获取值databasename,DB_USER和DB_PASSWD,并且从第2行获得mysql_host,mysql_user和mysql_password ,即all variables inside the function. 然后它应该在文件之前search该variables的声明:(分号) 例如:file1中的databasename可能是 $ databasename =“dbweb”; 例如:file2中的mysql_user可能是 $ mysql_user =“root”; 结果:它应该显示所有6个variables的variables声明以及文件名 file2:$mysql_host = "db1"; file2:$mysql_user = "root"; file1:$DB_USER = 'user';