我是体面的bash脚本,我正在赶上正则expression式,以及一些sed用法。 学习awk仍然值得,所有的select都在那里。 意见?
我试图sudo一个使用awk的命令,看起来awk在sh -c中的工作方式不同。 echo '1 2' | awk '{print $2}' 2 sh -c "echo '1 2' | awk '{print $2}'" 1 2 为什么发生这种情况?
我试图操纵多个条目的ldif文件。 我的目的是parsing这个现有的ldif文件,提取“givenName”和“sn”属性,从而生成一个“邮件”属性。 我正在考虑AWK或Sed,但不幸的是,我不是两个很好的工具的专家。 一个例子: 原始文件 dn: cn=fremer, ou=people, dn=domain, dn=com cn: fremer givenName: Freddy sn: Mercury dn: cn=markno, ou=people, dn=domain, dn=com cn: markno givenName: Mark sn: Knopfler 输出: dn: cn=fremer, ou=people, dn=domain, dn=com mail: [email protected] dn: cn=markno, ou=people, dn=domain, dn=com mail: [email protected] dn是需要的,因为我将把生成的ldif传递给LDAP更新的“ldapadd”。 任何build议或提示我应该在哪里看? 谢谢!
我正在使用AWK来读取我有的自定义日志文件。 格式是这样的: [12:08:00 +0000] 192.168.2.3 98374 "CONNECT 192.168.2.4:8091 HTTP/1.0" 200 现在,我有AWK(来自bash)设置为读取整个日志,分析每一行,并抓住每一行包含“连接”的工作,但是,它并没有帮助我发现独特的客户端。 做到这一点的方法是以某种方式过滤它,以便它分析每行的这一部分:“CONNECT 192.168.2.4:8091 HTTP / 1.0” 如果有一种方法可以抓取日志文件中的所有行,那么将它们全部进行比较,只计算类似的行。 举个例子: [12:08:00 +0000] 192.168.2.3 98374 "CONNECT 192.168.2.6:8091 HTTP/2.0" 200 [12:08:00 +0000] 192.168.2.3 98374 "CONNECT 192.168.2.9:8091 HTTP/2.0" 200 [12:08:00 +0000] 192.168.2.3 98374 "CONNECT 192.168.2.2:8091 HTTP/2.0" 200 [12:08:00 +0000] 192.168.2.3 98374 "CONNECT 192.168.2.9:8091 HTTP/2.0" 200 在这种情况下,我需要的答案是3,而不是4.因为2行是相同的,所以只有3个独特的行。 我需要的是用AWK自动完成这个任务。 如果任何人都可以伸出一个很棒的手。
CENTOS 5.x | 发送邮件 偶尔我需要通过sendmail传送日志来查找丢失消息发生了什么。 这通常涉及两个(或更多)步骤: 第1步:search/ var / log / maillog获取用户的电子邮件地址。 例如grep -i“[email protected]”/ var / log / maillog 通常返回这样的东西: Jan 11 07:43:34 server-example sendmail[12732]: p937blksdh3: to=<[email protected]>, delay=00:00:00, xdelay=00:00:00, mailer=esmtp, pri=102537, relay=mta.recipientdomain.com. [12.34.56.78], dsn=5.7.1, stat=Service unavailable 第二步:我将抓住唯一的消息名称(在这种情况下是p937blksdh3)并search。 例如: grep -i p937blksdh3 / var / log / maillog 我想将第1步和第2步合并为一行,并自动执行与其他ID相同的search。 所以在一个命令中,我想要执行以下操作: search特定string的sendmail maillog。 确定电子邮件的消息ID(在上面的例子中,这是p937blksdh3)。 (我猜awk'{print $}'会被使用?) search相同的日志,但search消息ID,而不是(在上面的例子中,基本上是grep […]
如何使用facter和puppet来确定操作系统是运行Cent 6.x还是Cent 5.x? facter operatingsystemrelease 6.4 我只关心主要版本(6) 我想过使用awk,但是一定有更好的方式,更加“傀儡体现”友好。 #This works, but is ugly trying to use this in a puppet manifest facter operatingsystemrelease |awk -F. '{print $1}' 6 更新 : 看起来新版本的facter有一些关于主要版本的附加信息,这些信息不在我的版本中。 我最初的供应需要假设因素已经过时。 facter –version 1.6.4 puppet –version 2.7.20 我尝试使用以下命令search可能会显示主要版本的任何其他事实 facter |grep 6
我试图用awkparsing文件来改变他们的名字。 一切都很顺利,直到我开始做这个与文件名空间的文件。 文件名是类似11237_712312955_2012-01-04 18_31_03.wav ,我想从文件名replaceWAV。 这是我的代码的例子: ls | awk -F\. '{print $1}' 我在控制台运行后,事情是好的,我没有扩展名的文件名。 例如:文件11237_712312955_2012-01-04 18_31_03.wav 在ls | awk -F\. '{print $1}' ls | awk -F\. '{print $1}' 控制台中的ls | awk -F\. '{print $1}'我正在创build: 11237_712312955_2012-01-04 18_31_03 ,这是正确的。 但是当我把它写在我的脚本中时: #!/bin/bash for i in $(ls); do FILENAME= echo $i | awk -F\. '{print $1}' ; #problematic line echo […]
我有一个bash脚本,我得到的磁盘使用率,例如60% 。 我如何删除%符号? 使用grep或awk?
我有一个226GB的日志文件,我想把它分成块,以便于xz ing。 问题是我的可用空间只剩下177GB的空间。 有一种方法可以split文件split一半或者分成N块,而不需要保留原始的副本。 $ split myFile.txt $ ls -halF -rw-r–r– 1 user group 35 Dec 29 13:17 myFile.txt -rw-r–r– 1 user group 8 Dec 29 13:18 xaa -rw-r–r– 1 user group 3 Dec 29 13:18 xab -rw-r–r– 1 user group 5 Dec 29 13:18 xac -rw-r–r– 1 user group 10 Dec 29 13:18 xad […]
如何使用search和replace来更改文件的内容。 我需要能够改变“全部为无”和/或“全无”,而不必每次都手动去做数百行。 下面是一个带有行号的示例文本文件。 我知道如何打开和closures已经写入的文件。 行 1 define_filter absolute_minimal_filter ——-全部 2 define_filter atma_basic_filter ——– —–无 3 define_filter atma_communication_filter – 全部 4 define_filter atma_health_filter ————-无 5 define_filter atma_misc_filter —————全部 6 define_filter atma_performance_filter —- none 7 define_filter atma_supplemental_filter —- none