我一直使用從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