我需要从我拥有的文件中提取一些信息。我以前在R中做过这个,但文件非常非常大,而且需要很长时间,所以我觉得使用命令行工具是一个更好的选择。
该文件基本上由100个制表符分隔的列组成,我只对第1列,第2列和第4列感兴趣。
文件中前四列的示例:
10 rs149353603:74656:C:G 0 74656 ...
10 rs140638708:75794:G:T 0 75794 ...
10 rs201043140:76210:A:G 0 76210 ...
10 rs202007578:76294:T:C 0 76294 ...
10 rs75914453 0 77582 ...
我希望它的格式为第2列,第1列,第4列。此外,我想在第二行中有一个冒号(第一个冒号之前的所有内容)的情况下修剪除第一个rs#之外的所有内容。
E.g。第一行是
rs149353603 10 74656
当我有时间的时候,我完全打算学习awk,但现在不幸的是现在不是这样!有人可以帮忙吗?
答案 0 :(得分:1)
你可以使用这样的awk命令:
awk 'BEGIN{FS=OFS="\t"} {sub(/:.*$/, "", $2); print $2, $1, $4}' file
rs149353603 10 74656
rs140638708 10 75794
rs201043140 10 76210
rs202007578 10 76294
rs75914453 10 77582
答案 1 :(得分:0)
由于您的文件非常大,您可能会发现首先使用“cut”更快,沿着以下管道行:
cut -f 1,2,4 | awk ....