Articles of awk

使用sed更改区域文件

我有这个DNS区域文件,我无法将资源loggingtypesA更改为CNAME @ IN SOA ns1.domain.com. webdev.domain.com. ( 2006080101 ; serial 8H ; refresh 2H ; retry 1W ; expire 4h) ; minimum ttl NS ns1.domain.com domain.com A 192.168.0.1 mail2 A 192.168.0.2 www CNAME domain.com webmail CNAME www sed -i 's/A/CNAME/g' dns-zone.file 上面的sed语句将A资源logging更改为CNAME,但CNAME也更改为CNCNAMEME .. 如何更改只有A资源logging而不更改任何其他string?

在导入之前使SQL转储中的电子邮件地址无效

概要 我想将生产数据导入到开发环境中,以便能够以几乎准确的方式进行testing。 当然,我需要使电子邮件地址无效,因为我不想让电子邮件到达最终用户。 资源 只是一个侧面说明 – 我的expression式故意匹配[']作为查询语法的一部分 到目前为止,我有以下使用grep这是testing我的expression。 $ cat site_backup.sql | egrep -io '\w+([._-]\w*)@\w+([._-]\w*)\.\w{2,4}' 这是打印的电子邮件地址,但我当然需要使用sedreplace: $ sed -r -e "s/'(\w+)([._-]\w*)@(\w+)([._-]\w*)(\.\w{2,4})'/\1\2@invalid.\3\4\5/g" -i site_backup.sql 在一小部分电子邮件地址上工作正常; 我注意到了一个没有被replace的模式'[email protected]' 结论 在为此添加另一个expression式之后,它没有任何影响。 我还没有研究过awk ,我知道这个awk非常强大,所以我并不是无知,我希望有人能帮上忙。 我的目标很简单,我使用mysqldump导出生产数据库,然后希望在将数据导入到开发环境之前,replace所有的电子邮件地址(或尽可能多的)。 我可能从一个尴尬的angular度做这个?

从bash修改configuration文件设置

我需要从bash脚本修改configuration文件,更改特定设置的值。 我需要使用常用的Linux工具(sed / awk / tr / etc)进行更改。 configuration文件可以在不同的节中具有相同的命名键: [section1] key1=a key2=b [section2] key1=a key2=b 和每个节中的行可以是不同的顺序,空行/之间的意见等。我已经试过sed,但不能跨线匹配(所以我不能匹配节名称)。 有人可以build议如何:1.更改与section1 key1相关的值? 2.打印标准输出与section1 key1相关的值

打印包含空格和特殊字符的最后一列

我需要一个完整的path/命令来启动一个在networking上暴露的进程 – 在tcp / udp上监听。 我设法使用下面的“单线”来解决所有这些问题: netstat -nlp46|tail -n +3 | while IFS=" " read -r -a line; do nb=${#line[@]}; PID=$(echo ${line[$((nb – 1))]} | awk -F'/' '{print $1}'); CMD=$(ps -ef|awk '$2 == '"$PID" |awk -F" " '{out=$8; for(i=9;i<=NF;i++){out=out""$i}; print out}'); echo $PID^$CMD; done 但是当进程在命令行中包含一些特殊字符,例如瘦服务器时,脚本会出现一些跟随错误的问题 awk: line 1: missing ) near end of line 当我在这个过程中运行脚本的一部分时,我没有任何问题 […]

如何在sed中的两个单引号之间插入一个复杂的行?

我在/var/lib/pgsql/data/postgresql.conf文件中有这一行: # archive_command = '' # command to use to archive a logfile segment 我们需要取消注释archive_command参数,并将其值设置为 'rsync -a %p barman@barman-backup-server-ip:/var/lib/barman/main-db-server/incoming/%f' 所以预期的结果将是 archive_command = 'rsync -a %p barman@barman-backup-server-ip:/var/lib/barman/main-db-server/incoming/%f' 如何通过sed或perl单行内存执行此操作? 其他选项只是添加行: archive_command = 'rsync -a %p barman@barman-backup-server-ip:/var/lib/barman/main-db-server/incoming/%f' 后行: #archive_command = ''

做… while原始1978年awk循环?

do … while循环在原始awk中工作吗? 或者在后来的实现中引入了它(nawk,gawk,…)? 今天所有的Unix平台上都可以考虑使用吗? 欢迎,奥利弗

只消除grep使用awk的需要

我想要生成一个PID的列表来传递给我只想要PID的PHP-FPM。 我可以通过使用grep与awk得到正确的输出,但我正在寻找awk唯一的答案。 这是我所做的。 这给出了所需的输出: $ ps ajxf |grep '[p]hp-fpm: pool' |awk '{print $2}' 21547 21548 21549 21938 31131 31132 31133 31189 36283 10549 12179 12893 12964 12989 13565 14420 14421 15848 17737 这一个没有: $ ps ajxf |awk '/php-fpm: pool/{if (NR!=1) {print $2}}' 22903 <— This is the PID of the awk 21547 21548 21549 21938 […]

sed / awk:从string中提取一个数字

我有许多行,像下面这样从bash命令返回,具有不同的数字长度的sourceNodeIds : <NodeAssociation sourceNodeId="33654" […] sourceNodeEntity="Issue" /> 我想sourceNodeId="nnnn"到sed或awk,只需从sourceNodeId="nnnn"返回数字nnnn 就像是: cat blah | sed 's/.+?sourceNodeId="\(\d+\)".+/\1/' 但是这不起作用。 我在Mac上,如果这有什么区别(我认为sed的版本可能会有所不同)。 我知道Perl的正则expression式,但我认为sed期待着一种不同的types。 谢谢!!!

shell脚本+从日志文件中匹配MAJOR和CRITICALstring

我需要匹配具有MAJOR和CRITICALstring的行 在ERROR:<any integer number>之后 请build议如何使用awk或sed命令做到这一点? more HW_Log.txt CHK_HW ERROR:0 INFO self_monitor Verifying HW machine CHK_HW ERROR:1 MAJOR self_monitor Verifying HW machine CHK_HW ERROR:1 CRITICAL self_monitor Verifying HW machine

如何join可变数量的行

我有一个文件的function名称和可变数目的用户名如下: 优点1 USER1 用户2 特点2 用户3 我想能够将用户名移动到function名称相同的行(沿vijoin命令行)。 function名称以大写字母开头,用户名以小写字母开头。 有没有办法做到这一点?