0

我有一个大文本文件,格式如下:

1 2327544589

1 3554547564

1 2323444333

2 3235434544

2 3534532222

2 4645644333

3 3424324322

3 5323243333

...

并且输出应该是名称中带有后缀的文本文件,原始文件的第一列编号保留相应输出文件中第二列的编号,如下所示:

file1.txt:

2327544589

3554547564

2323444333

file2.txt:

3235434544

3534532222

4645644333

file3.txt:

3424324322

5323243333

...

该脚本应该在 Solaris 上运行,但我也遇到了指令 awk 和其他指令的选项,如 -c with cut;它非常有限,所以我正在寻找 Solaris 上的常用命令。我不允许在系统上更改或安装任何东西。使用循环不是很有效,因为脚本在处理大文件时花费的时间太长。所以除了使用 awk 指令和循环之外,还有什么建议吗?

4

1 回答 1

3

可能是这样的:

$ awk 'NF>1{print $2 > "file"$1".txt"}' input

$ cat file1.txt 
2327544589
3554547564
2323444333

或者如果你有 bash 可用,试试这个:

#!/bin/bash

while read a b
do
    [ -z $a ] && continue
    echo $b >> "file"$a".txt"
done < input

输出:

$ paste file{1..3}.txt
2327544589  3235434544  3424324322
3554547564  3534532222  5323243333
2323444333  4645644333  
于 2013-05-29T21:26:30.163 回答