采取从文件
我学习bash中的每一行持续人物和我有50万行的文件,他们每个人都有这样的模式:采取从文件
NNNNNNNN NNNNNNÇ
N =号| C = char A-Z |第一个空间是标签,第二个是空间。
我想用最后一部分创建一个文件,从第二列数字开始(NNNNNN C)使用bash脚本。我能够做到这一点:
i=1
while [ $i -le 500000 ]
do
echo $i
sed $i"q;d" $1 | tail -c 9 >> file
((i++))
done
但它需要时间,因为它将逐行写入文件中的每一行。我怎样才能更快地做到这一点?
感谢
您可以使用read
分割每行成词,然后打印你想要的:
while read a b c; do
echo "$b $c"
done <input_file> output_file
这完美的作品,我想我会在其他类型的文件使用它。谢谢! – Fdiazreal 2013-03-10 22:43:52
是的,这将需要一段时间。虽然您的DIY精神需要使用bash来表扬,但这类任务通常需要使用专为此类任务设计的unix工具。
试试这个
sed 's/^.*<T>//' file > outFile
其中<T>
要么是 '\ t' 或文字标签字符,这取决于你的sed的版本。
这会删除文件中每行的第一个选项卡,然后打印outFile中剩下的内容。 IHD。
IHTH。
对于使用RegEx的其他文件将非常有用。谢谢! – Fdiazreal 2013-03-10 22:47:51
伟大而简单。我已经阅读了手册页,我也可以用'cut -c 10-17 $ 1> $ 2'来完成它,并使用参数。谢谢! – Fdiazreal 2013-03-10 22:45:11
很高兴我的回答帮了你。通常最简单的工具是最好的。 – Johnsyweb 2013-03-11 04:23:37