我一直使用从another stackoverflow post的“B”例如,返回模式匹配后的所有行(空行 - $ ^),但不包括比赛直到EOF。第一个例子是用于引用的未过滤输出(包括“加载支持...”之后的空行),第二个是当前使用awk输出的内容。用awk打印后的所有行正则表达式,改变输出域
[[email protected] ~]# yum -C check-update 2>/dev/null
Loaded plugins: kabi, product-id, refresh-packagekit, security, subscription-manager
Loading support for Red Hat kernel ABI
kernel.x86_64 2.6.32-431.5.1.el6 rhel-6-server-rpms
kernel-abi-whitelists.noarch 2.6.32-431.5.1.el6 rhel-6-server-rpms
kernel-devel.x86_64 2.6.32-431.5.1.el6 rhel-6-server-rpms
kernel-doc.noarch 2.6.32-431.5.1.el6 rhel-6-server-rpms
kernel-firmware.noarch 2.6.32-431.5.1.el6 rhel-6-server-rpms
kernel-headers.x86_64 2.6.32-431.5.1.el6 rhel-6-server-rpms
[[email protected] ~]# yum -C check-update 2>/dev/null | awk 'f;/$^/{f=1}'
kernel.x86_64 2.6.32-431.5.1.el6 rhel-6-server-rpms
kernel-abi-whitelists.noarch 2.6.32-431.5.1.el6 rhel-6-server-rpms
kernel-devel.x86_64 2.6.32-431.5.1.el6 rhel-6-server-rpms
kernel-doc.noarch 2.6.32-431.5.1.el6 rhel-6-server-rpms
kernel-firmware.noarch 2.6.32-431.5.1.el6 rhel-6-server-rpms
kernel-headers.x86_64 2.6.32-431.5.1.el6 rhel-6-server-rpms
我不知道如何去改变awk命令来使用不同的输出字段分隔符“,”以CSV格式输出。我所要的输出是这样的:
kernel.x86_64,2.6.32-431.5.1.el6,rhel-6-server-rpms
kernel-abi-whitelists.noarch,2.6.32-431.5.1.el6,rhel-6-server-rpms
kernel-devel.x86_64,2.6.32-431.5.1.el6,rhel-6-server-rpms
kernel-doc.noarch,2.6.32-431.5.1.el6,rhel-6-server-rpms
kernel-firmware.noarch,2.6.32-431.5.1.el6,rhel-6-server-rpms
kernel-headers.x86_64,2.6.32-431.5.1.el6,rhel-6-server-rpms
编辑: 试图保持它在AWK和作为一个班轮。我刚刚管道输送到awk '{OFS=","} $2 = $2'
可能已经发誓我试着把它放在'f;'的前面,但似乎我错过了它。使用'yum -C check-update 2>/dev/null | awk'{OFS =“,”} {$ 1 = $ 1} f;/$ ^/{f = 1}''现在。谢谢! – crashmaxed
'$ 1 = $ 1'重新计算整行'$ 0',而不仅仅是第一个字段'$ 1' – Jotne