shell - 如何在ubuntu中检查txt文件的分隔符
问题描述
我有 .txt 文件,我想检查它们的分隔符。文件可能有分隔符制表符、竖线 (|) 和逗号
制表符分隔文件
ID Name Email
1 Test a@test.com
2 testone b@test.com
逗号分隔
ID,Name,Email
1,Test,a@test.com
2,testone,b@test.com
对于上述示例数据,我想获得分隔符。所以对于第一个示例分隔符是制表符,对于第二个分隔符是逗号(,)
解决方案
这实际上是一个非常好的问题,我也想看看其他人的解决方案。这是在自动化处理 sh***y 数据时需要解决的问题:
awk '
FNR==1 { # process the header record
line=$0 # duplicate to leave $0 usable
gsub(/[^,|\t]/,"",line) # remove non-candidates
split(line,a,"") # split leftovers
delete b # ... since FNR...
max=prev=0 # reset
for(i in a) # flip a and count hits
b[a[i]]++
for(i in b) # find max amount of hits
if(b[i]>=b[max]) {
prev=max
max=i
}
if(b[prev]==b[max]) { # if count collision
print "Multiple candidates for delimiter. Exiting."
exit 1
}
# below: output
printf "Delimiter: %s\n",(max=="\t"?"\\t":(max==" "?"[space]":max))
exit
}' file
输出例如:
Delimiter: \t
推荐阅读
- postgresql - 优化postgreSQL以降低成本
- javascript - 如何使用 jQuery AJAX 发布 JSON 数据
- nrwl-nx - 在解决与包的monorepo不兼容的问题的同时,是否可以使用带有自己的node_modules文件夹的NX-APP?
- c# - Termstore 条款以编程方式更改 sharepoint 2013 c#
- sql - 我创建了这个 CHECK 约束来保证 4 个字段中的至少 2 个在一个条目中是等效的。为什么它不起作用?
- mongodb - Pymongo - 纪元日期过滤器查询不适用于集合
- discord.js - 在嵌入页面中显示公会并为每个公会添加一个反应
- r - 根据下一个 R 替换 df 中的值
- php - Laravel 自递归关系
- r - 向量中的所有可能组合