我的文本文件中的数据看起来像这样:
* *
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 :(得分:1)
使用条件运算符检查记录是否只有空格*
s:
$ awk '{ print ( /[^ *]/ ? NF : $0 ) }' file
* *
11
* *
* *
* *
4
* *
10
* *
9
* *
* *