有哪些单行代码可以将第 n 列的唯一元素输出到另一个文件?
我有一个这样的文件:
1 2 3
4 5 6
7 6 8
9 6 3
4 4 4
有哪些单行代码可以将第 n 列的唯一元素输出到另一个文件?
编辑:这是人们给出的解决方案列表。谢谢你们!
cat in.txt | cut -d' ' -f 3 | sort -u
cut -c 1 t.txt | sort -u
awk '{ print $2 }' cols.txt | uniq
perl -anE 'say $F[0] unless $h{$F[0]}++' filename
I have a file like this:
1 2 3
4 5 6
7 6 8
9 6 3
4 4 4
What are some one-liners that can output unique elements of the nth column to another file?
EDIT: Here's a list of solutions people gave. Thanks guys!
cat in.txt | cut -d' ' -f 3 | sort -u
cut -c 1 t.txt | sort -u
awk '{ print $2 }' cols.txt | uniq
perl -anE 'say $F[0] unless $h{$F[0]}++' filename
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
在
5.10
之前的 Perl 中在
5.10
之后的 Perl 中将
0
替换为要输出的列。对于 j_random_hacker,这里是一个使用很少内存的实现(但速度较慢并且需要更多打字):
dbmopen 在 DBM 文件之间创建一个接口(它创建或打开)和名为 %h 的哈希。 %h 中存储的任何内容都将存储在光盘上而不是内存中。使用 unlink 删除文件可确保程序完成后文件不会保留,但对当前进程没有影响(因为根据 POSIX 规则,文件系统将打开的文件句柄视为真实文件)。
In Perl before
5.10
In Perl after
5.10
Replace
0
with the column you want to output.For j_random_hacker, here is an implementation that will use very little memory (but will be a slower and requires more typing):
dbmopen creates an interface between a DBM file (that it creates or opens) and the hash named %h. Anything stored in %h will be stored on disc instead of in memory. Deleting the file with unlink ensures that the file will not stick around after the program is done, but has no effect on the current process (since, according to POSIX rules, open filehandles are respected by the filesystem as real files).
更正:谢谢马克·鲁沙科夫。
或者
Corrected: Thank you Mark Rushakoff.
or
取第三列的唯一值:
cut -d' '
表示以空格分隔输入,-f 3
部分表示取第三个字段。最后,sort -u
对输出进行排序,仅保留唯一的条目。Taking the unique values of the third column:
cut -d' '
means to separate the input delimited by spaces, and the-f 3
part means take the third field. Finally,sort -u
sorts the output, keeping only unique entries.假设您的文件是“cols.txt”,并且您想要第二列的唯一元素:
您可能会发现以下文章对于了解有关此类实用程序的更多信息很有用:
Say your file is "cols.txt" and you want the unique elements of the second column:
You might find the following article useful for learning more about such utilities:
如果使用awk,则无需使用其他命令
if using awk, no need to use other commands