[英]Separating different sized blank spaces with awk and adding zeros to a column
我在處理由不同大小的空白空間和不同大小的元素分隔的表時遇到麻煩。 理想情況下,我希望所有字段都用制表符分隔。 我還想向空白的任何字段元素添加零條目。 鑒於字段之間存在不同大小的空格,因此不確定awk FS / OFS是否是此處最合適的方法。
如果我執行awk'{print $ 4}',則會在第三行之后的條目上得到列4和列5的組合。 所以我覺得我需要一個正式的分隔符。
當前代碼(分隔符不同大小的空格):
1 0.98809 1.28484E-01 2.15265E-02 1.0559 1.1562 212.92 1.2248
2 1.0222 5.81189E-01 1.24861E-04 1.0222 1.2548 216.26 1.8981
3 1.1162 1.11291E-02 1.1256 1.2642 222.04 4.0946
4 1.1922 2.0822 1.1219 1.2826 216.16 4.1229
預期的代碼(分隔符選項卡,其中添加了零以填充空白):
1 0.98809 1.28484E-01 2.15265E-02 1.0559 1.1562 212.92 1.2248
2 1.0222 5.81189E-01 1.24861E-04 1.0222 1.2548 216.26 1.8981
3 1.1162 1.11291E-02 0.0 1.1256 1.2642 222.04 4.0946
4 1.1922 2.0822 0.0 1.1219 1.2826 216.16 4.1229
使用GNU awk的可能解決方案及其使用FIELDWIDTHS
格式FIELDWIDTHS
:
awk 'BEGIN{FIELDWIDTHS="13 12 12 12 12 12 12 12"; OFS="\t"}
{
for(i=1;i<=NF;i++)
$i=($i+0?$i:sprintf("%-" length($i) "s","0.0"))
}1' file
該腳本循環遍歷所有字段(不僅是第四個字段),以檢查是否為空。 如果是這樣,則將用空格填充的0.0
分配給空白字段。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.