Articles of sed

SED不能使用复杂的string

我有一个像这样开始的文件: [global] pid = /var/run/php-fpm/php-fpm.pid error_log = /var/log/php5-fpm.log 并想要更换 error_log = /var/log/php5-fpm.log 同 error_log = /var/log/php-fpm/error.log 我想为此使用一个脚本,并执行以下操作: search='error_log = /var/log/php5-fpm.log' replace='error_log = /var/log/php-fpm/error.log' for file in `find -name 'php-fpm.conf'`; do grep "$search" $file &> /dev/null if [ $? -ne 0 ]; then echo "Search string not found in $file!" else sed -i "s#$search#$replace#" $file fi […]

如何获得HTTPS证书?

INPUT: echo QUIT | openssl s_client -connect mail.google.com:443 | sed -ne '/BEGIN CERT/,/END CERT/p' OUTPUT: depth=2 C = US, O = "VeriSign, Inc.", OU = Class 3 Public Primary Certification Authority verify return:1 depth=1 C = ZA, O = Thawte Consulting (Pty) Ltd., CN = Thawte SGC CA verify return:1 depth=0 C = US, ST […]

如何删除匹配的行,上面的行和下面的行?

在nagiosconfiguration define service{ use generic-service host_name xxx.xxx.com service_description xxx Status check_command check_http!xxx.xxx.com -S } 我想删除整个部分,如上面给出的正则expression式匹配xxx.xxx.com 。 如何使用sed或任何其他Linux实用程序

linux +通过sed或awk或perl从CSV文件创build主机文件

我有以下CSV文件 这个文件定义了哪个Linux机器存在于系统中,并且存在ip 我的目标是从这个文件创build主机文件 请教如何从我的CSV文件创build主机文件(我需要将CSV文件的IP地址匹配到主机文件的第一个字段,然后匹配LINUX名称,并在第二个字段中find这个名称 – 例如1) 备注 – 应该由sed或awk或perl ..执行,我需要在我的bash脚本中写解决scheme CSV文件 , machine , VM-LINUX1 , SZ , Phy , 10.213.158.18 , PROXY , VM-LINUX2 , SZ , 10.213.158.19 , OLD HW , VM-LINUX3 , SZ , 10.213.158.20 , , VM-LINUX4 , SZ , Phy , 10.213.158.21 , , VM-LINUX5 , SZ , Phy , […]

使用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相关的值

如果它包含来自bash文件的特定匹配项,则删除一行

我有一个文件包含如下所示的行。 10 TEST NO SOMETHING 20 TEST YES SOMETHING 101 TEST YES SOMETHING 100 TEST NO SOMETHING 如果我find一个匹配的单词10 ,我怎样才能删除开始时使用sed或任何其他工具的10 ?

如何在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 = ''

perl + sed +删除以“#”开头的行

请指教 我有Linux和solaris机器,而且我需要在两个操作系统上工作的命令 我使用下面的perl行来删除所有以“#”开头的行,为什么perl命令不工作, 备注 – 还需要支持以空格或TAB开头的行,然后是“#” perl -i -pe 'next if /^ *#/' file 。 more file # aa a # bbb #xxx