wendyxiaoqing的个人博客分享 http://blog.sciencenet.cn/u/wendyxiaoqing

博文

shell语言中uniq命令对文本的处理

已有 3969 次阅读 2012-7-6 23:07 |个人分类:shell|系统分类:科研笔记| uniq

实例,wise 和sdss用Topcat交叉,选All match, 1 and 2  生成表格。
wise和sdss dr8交叉的表格,col1和col2是wise坐标, col23和col24是sdss坐标。
一,想找出相同sdss源对应不同wise源的情况,即sdss坐标相同,wise坐标不同的情况。
先把文本字符对齐:
 awk -F , '{printf "%13.9ft%13.9ft%13.9ft%13.9ft%13.9ft%13.9ft%13.9ft%13.9ft%13.9ft%13.9ft%13.9ft%13.9ft%13.9ft%13.9ft%13.9ft%13.9ft%13.9ft%13.9ft%13.9ft%13.9ft%13.9ft%13.9ft%13.9ft%13.9ft%13.9ft%13.9ft%13.9fn", $1, $2, $3, $4, $5, $6, $7, $8, $9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27}' wise_dr8suniqssnochar.csv > wise_dr8suniqssnocharduiqi.csv
sort  -t $'\t' -k23 -k24 wise_dr8suniqssnocharduiqi.csv | uniq -f22 -w25 -D > onesdssmultiwise.csv
sed -i 's/\t/,/g' onesdssmultiwise.csv

二,去除上述情况以后,剩下的文本数据:即wise ,sdss一一对应的情况,和一个wise对多个sdss的情况。
sort  -t $'t' -k23 -k24 wise_dr8suniqssnocharduiqi.csv | uniq -f22 -w25 -u > onesdssmultiwise_rest.csv

解释:-D, --all-repeated[=delimit-method 显示所有重复的行
                        delimit-method={none(default),prepend,separate}
                           以空行为界限
          -f, --skip-fields=N 比较时跳过前N 列
          -s, --skip-chars=N 比较时跳过前N 个字符
         -w, --check-chars=N 对每行跳过前N 列后第N 个字符以后的内容不作对照
         -f22 -w25表示跳过前22列(包括第22列后的t键),之后数25个字符,第25个字符(包括第25个字符)以后的字符不计入uniq范围


https://blog.sciencenet.cn/blog-749052-589614.html

上一篇:SDSS dr8数据的下载
下一篇:idl7.1的安装
收藏 IP: 159.226.169.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-8-1 15:23

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部