我有一个制表符分隔的文件,如下所示:
123 some text
123 some different text
334 some other text
341 more text
我想做两件事。一种是按数字对所有内容进行排序(这很容易做到),另一种是如果数字已经存在则删除一行。即输出将如下所示:
123 some text
334 some other text
341 more text
我尝试获取一个仅包含唯一数字的文件,即
123
334
341
并将其与原始文件连接起来:
join -j 1 justNumbers.txt original.txt
但这给了我原始文件。有任何想法吗?
答案1
如果您想排序/测试唯一性第一的具体来说,并且您的系统有 GNUcoreutils
版本sort
,那么我认为您可以使用
sort -nu file
即。
$ sort -nu file
123 some text
334 some other text
341 more text
从info coreutils 'sort invocation'
命令
sort -u
和sort | uniq
是等效的,但这种等效性并不扩展到任意sort
选项。 例如,sort -n -u
在检查唯一性时仅检查初始数字字符串的值,而sort -n | uniq
检查整条生产线。
答案2
尝试这个awk
:
awk '!($1 in a){a[$1];print}' file
123 some text
334 some other text
341 more text
这假设文件已排序。