从文件中复制仅包含在引号“”内的文本

从文件中复制仅包含在引号“”内的文本

/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

相关内容