2017-04-21 24 views
0

我在文本文件中的數據,看起來是這樣的:數量和使用awk替換;而拷貝符合標準線

* * 
18.442 24.661 32.45 53.061 62.039 100.303 113.257 123.638 131.444 142.779 149.064 
* * 
* * 
* * 
27.788 49.938 132.166 139.538 
* * 
12.224 19.48 29.61 36.646 57.56 107.559 114.111 122.871 135.943 145.89 
* * 
14.162 21.568 28.105 34.322 42.914 52.978 100.12 106.172 112.79 
* * 
* * 

我想用awk來算,每行的​​條目數(計數「 。「)很好。如果該行只有「*」,那麼我想複製文本文件的原始行。

我所要的輸出是這樣的:

* * 
11 
* * 
* * 
* * 
4 
* * 
10 
* * 
9 
* * 
* * 

然而,現在要做到這一點,我可以找到最好的方式是:

awk -F\. '{print NF-1}' myfile.txt 

,但是這顯然給了我0在「*」行。

任何想法?

+0

'的awk '!/^\ */{打印;}/^ \ */{打印NF;}' file' –

回答

1

使用條件運算符來檢查記錄是否只有空間和* S:

$ awk '{ print (/[^ *]/ ? NF : $0) }' file 
* * 
11 
* * 
* * 
* * 
4 
* * 
10 
* * 
9 
* * 
* * 
+1

該解決方案在上述情況下使用或不使用$ 0〜。謝謝! – Kosagl