osc*_*ter 5 sort locale csv uniq
我有一个包含 220k 个名称的 CSV 文件,我想将这些名称批量导入到图形数据库中。批量导入器强加了每个节点只能出现一次的限制,所以我想使用sort
和删除重复项uniq
:
sort all-authors.csv | uniq > unique-authors.csv
Run Code Online (Sandbox Code Playgroud)
在调查丢失的节点时,我观察到了这种奇怪的行为:
$ grep ??? unique-authors.csv
$ grep ??? all-authors.csv
"???"
$
Run Code Online (Sandbox Code Playgroud)
该名称被传递sort
但随后丢失uniq
:
$ sort all-authors.csv | grep ???
"???"
$ sort all-authors.csv | uniq | grep ???
$
Run Code Online (Sandbox Code Playgroud)
它适用于其他非英语名称,例如:
$ grep '?? ??' *csv
all-authors.csv:"?? ??"
unique-authors.csv:"?? ??"
$
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?
编辑:添加了语言环境的输出
$ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8
$
Run Code Online (Sandbox Code Playgroud)
编辑:使用单行文件和 sort -u 添加尝试的输出
回答 pLumo 关于仅包含受影响字符串的文件的评论:
$ grep ??? all-authors.csv > single-author.csv
$ sort single-author.csv | uniq
"???"
$
Run Code Online (Sandbox Code Playgroud)
回答 rush 的评论sort -u
:
$ sort -u all-authors.csv | grep ???
Run Code Online (Sandbox Code Playgroud)
我没有为 uniq 设置任何别名,我使用 进行了验证alias | grep uniq
,它不返回任何内容。
小智 0
基于以下答案:\n /sf/ask/418777201/
\n\n这对我来说很有效:
\n\n没有LC_COLLATE=C
sort test | uniq\n\xec\x9d\xb4\xec\x84\xa0\xeb\x8f\x99\n
Run Code Online (Sandbox Code Playgroud)\n\n和LC_COLLATE=C
LC_COLLATE=C sort test | LC_COLLATE=C uniq\n\xeb\x8f\x99\xec\x84\xa0\xec\x9d\xb4\n\xeb\x8f\x99\xec\x9d\xb4\xec\x84\xa0\n\xec\x84\xa0\xeb\x8f\x99\xec\x9d\xb4\n\xec\x84\xa0\xec\x9d\xb4\xeb\x8f\x99\n\xec\x9d\xb4\xeb\x8f\x99\xec\x84\xa0\n\xec\x9d\xb4\xec\x84\xa0\xeb\x8f\x99\n
Run Code Online (Sandbox Code Playgroud)\n
归档时间: |
|
查看次数: |
120 次 |
最近记录: |