2010-10-02 135 views

回答

4

像这样的东西应该工作(我没有测试过):

while read num rest; do 
    echo "$num $rest" >> "filename.$num" 
done < inputFile 

read会读文本行,然后s把它分成“文字”,就像你运行一个命令一样。它将为第一个变量名(第一个变量名称为num)分配第一个“word”,第二个变量名称为rest,依此类推。如果变量用完,它会将行的其余部分追加到最后一个变量(rest,在这里)。

read成功处理一条线时,它将返回零,这是shell脚本中的“成功”,因此while循环将继续读取后续行。当read到达文件末尾时,它将返回1,停止while循环。

4
awk '{print $2 >> "filename."$1 }' filename 

如果你想整个行:

awk '{print $0 >> "filename."$1 }' filename 
0

使用bash for循环,切割和grep

for i in `cut -s -d ' ' -f 1 input.txt`; do 
    grep ^$i input.txt > filename.$i 
done;