我有一个非常大的制表符分隔列(225,000行乘16列)文件,我想从中提取每行的子字符串并创建一个单独的文件。例如,这是一行字符,我想在gi |之间提取数字516315992和|并为所有225,000行做到这一点。
这是表中的一行,例如:
M01522:132:000000000-A4LNU:1:2114:14381:3858 gi|516315992|ref|WP_017712686.1| 317 153 19 74 2e-09 60.1 53.57 56 25 1 1223 N/A N/A hypothetical protein [Prochlorothrix hollandica]
我想从该文本字符串中提取数字516315992,并将一个表(一列,n行)放入一个单独的文件中。
我是一个真正的新手,但愿意花时间。
感谢您的帮助。
小心
劳尔
答案 0 :(得分:1)
您可以使用此oneliner:
perl -F"\|" -a -ne 'print "$F[1]\n"' input.txt > result.txt
请注意,-F
将分割输入的模式作为参数。然后oneliner中的数组@F
包含拆分后产生的字段。
输出重定向到result.txt
有关Perl命令行开关的详细信息,请参阅perlrun。
答案 1 :(得分:0)
在一个班轮中:
perl -ne 'print "$1\n" if /gi\|([^|]*)/' file.txt
答案 2 :(得分:0)
这可能适合你(GNU sed):
sed 's/^[^|]*|\([^|]*\)|.*/\1/' file
答案 3 :(得分:0)
如果文件中的数据都采用相同的格式,那么这个简单的awk
应该这样做:
awk -F\| '{print $2}' org_file > new_file
按|
分割文件并打印第二列。