我有一个这样的命令行:
awk '$9 < 0.1' s_all_frq.txt | wc -l
awk '$9 >= 0.1 && $9 < 0.2 ' s_all_frq.txt | wc -l
当我运行它时,我得到这样的输出。
$ awk '$9 < 0.1' s_all_frq.txt | wc -l
63278
$awk '$9 >= 0.1 && $9 < 0.2 ' s_all_frq.txt | wc -l
2346
当我尝试将其保存在文本文件中时,它总是替换第一个输出。所以我使用这些命令:
awk '$9 < 0.1' s_all_frq.txt | wc -l > 1.txt
awk '$9 >= 0.1 &&$9 < 0.2 ' s_all_frq.txt | wc -l > 1.txt
我只在文本文件中保存2346
。我认为文件被覆盖了。我想知道是否可以在此命令中添加一些内容以将输出保存为文件中的新行,因此我将在最终文件中添加此内容:
63278
2346
答案 0 :(得分:6)
使用>>
代替>
来代替替换。
awk '$9 >= 0.1 &&$9 < 0.2 ' s_all_frq.txt | wc -l >> 1.txt
其他例子:
user@home:~$ echo A >1.txt
user@home:~$ echo B >1.txt
user@home:~$ cat 1.txt
B
user@home:~$ echo C >>1.txt
user@home:~$ cat 1.txt
B
C
user@home:~$
答案 1 :(得分:4)
使用>>
代替>
,例如
awk '$9 < 0.1' s_all_frq.txt | wc -l >> 1.txt
awk '$9 >= 0.1 &&$9 < 0.2 ' s_all_frq.txt | wc -l >> 1.txt
这会将输出附加到文件中。
答案 2 :(得分:1)
如何在awk
内完成所有操作。
awk '$9 >= 0.1 && $9 < 0.2 {print | "wc -l > 1.txt"}' s_all_frq.txt
print items > output-file
此重定向将项目打印到名为output-file的输出文件中。文件名输出文件可以是任何表达式。它的值更改为字符串,然后用作文件名 使用此类重定向时,输出文件将在写入第一个输出之前被擦除。 对同一输出文件的后续写入不会删除输出文件,而是附加到它。 (这与在shell脚本中使用重定向的方式不同。)如果output-file不存在,则创建它。
例如,以下是awk程序如何将BBS名称列表写入名为name-list的文件,以及将电话号码列表写入另一个名为phone-list的文件:
$ awk '{ print $2 > "phone-list"
> print $1 > "name-list" }' BBS-list
$ cat phone-list
-| 555-5553
-| 555-3412
...
$ cat name-list
-| aardvark
-| alpo-net
...
每个输出文件每行包含一个名称或编号。
[jaypal:~/Temp] cat file.txt
1
2
3
4
5
6
7
8
9
10
[jaypal:~/Temp] awk '/1/{print "this is one" > "newfile.txt"}' file.txt
[jaypal:~/Temp] cat newfile.txt
this is one
this is one
答案 3 :(得分:0)
没有'wc'的awk进程应该可以正常工作
awk '$9<0.1{i++;next;} $9<0.2{j++} END{print i;print j}' s_all_frq.txt
未经过测试