从文件的每一行获取持续字符

时间:2013-03-08 21:37:38

标签: bash

我正在学习bash,我有一个包含500000行的文件,每个文件都有这种模式:

NNNNNNNNNNNNNN C

N =数字| C = char A-Z |第一个空格是一个标签,第二个是常规空间。

我想使用bash脚本从第二列数字( NNNNNN C )开始创建一个带有最后一部分的文件。我能够做到:

i=1
while [ $i -le 500000 ]
do
    echo $i
    sed $i"q;d" $1 | tail -c 9 >> file
    ((i++))
done

但这需要很长时间,因为它会逐行将每行写入文件。我怎么能更快地做到这一点?

由于

3 个答案:

答案 0 :(得分:2)

您可以使用read将每一行拆分为单词,然后打印出您想要的行:

while read a b c; do
  echo "$b $c"
done < input_file > output_file

答案 1 :(得分:1)

是的,这需要一段时间。虽然使用bash来表达DIY精神,但通常会使用专为此类任务设计的unix工具来处理这类任务。

试试这个

 sed 's/^.*<T>//' file > outFile

其中<T>是'\ t'或文字制表符char,具体取决于你的sed版本。

这将删除文件中每行第一个选项卡的所有内容,然后打印剩余的文件。

IHTH。

答案 2 :(得分:1)

使用cut,默认使用制表符作为分隔符。

阅读infile并将字段(-f)2向前(2-)放入file

cut -f2- infile > file