/etc/opendkim/keys/"$(hostname)"/default.txt
包含以下内容
default._domainkey IN TXT "v=DKIM1; r=postmaster; g=*; k=rsa; p=MIGfMA0GCSqGSIb3DQEBZZZZZZZZZZZZZZZZZZZZZZZZYVW/965FePDPfxTIUT5ScJ3mZZZZZZZZ8BWNgLFS6JtZZZZZZZZZZZZZZk7Sc+eQwY6tHAQvHczJTTkICB4WW9mtc5PlFAZNuC9X3oYTeIp8cpScBmaIaP+t35fwh+PL7ZZZZZZZZZZ3ZxoFsJD6pvCqx+TCbZZZZZZZZ5JQIDAQAB" ; ----- DKIM default for mydomain.com
我只想将引号内的内容(不包括它们)复制v=DKIM1; r=postmaster; g=*; k=rsa; p=MIGfMA0GCSqGSIb3DQEBZZZZZZZZZZZZZZZZZZZZZZZZYVW/965FePDPfxTIUT5ScJ3mZZZZZZZZ8BWNgLFS6JtZZZZZZZZZZZZZZk7Sc+eQwY6tHAQvHczJTTkICB4WW9mtc5PlFAZNuC9X3oYTeIp8cpScBmaIaP+t35fwh+PL7ZZZZZZZZZZ3ZxoFsJD6pvCqx+TCbZZZZZZZZ5JQIDAQAB
到另一个文件中。
我怎样才能做到这一点?
答案1
如果每行肯定只有一个带引号的字符串,那么您的最佳性能可能的解决方案将涉及cut
:
cut -d\" -f2 <in >out
如果每行可以有多个带引号的字符串,那么您可以这样做:
sed 's/[^"]*\("[^"]*"\)[^"]*/ \1 /g' <in >out
...这将仅打印每行的所有双引号字符串,每个字符串都用前导和尾随空格分隔。
上述解决方案都不是其他引用不过,意识到了。例如,两者都不会忽略反斜杠转义引号或硬引号中包含的双引号字符串。
答案2
sed 's/.*\"\(.*\)\".*/\1/' filename