将stdin转换为每行一个文件

时间:2009-12-19 21:16:28

标签: sed awk

我想使用标准的linux shell脚本工具(sed,awk等)编写一个小脚本,以便为每行输入创建一个输出文件。例如,给定以下输入文件'input':

line1
line2
line3

我想运行命令。

$ cat input | my_prog

其中'my_prog'是一个创建三个输出文件的脚本,out.1,out.2,out.3

$ cat out.1
line1 

$ cat out.2
line2

$ cat out.3
line3

4 个答案:

答案 0 :(得分:2)

count=0
for line in $(cat input)
do
echo $line > out.$count
let count=count+1
done

答案 1 :(得分:1)

perl -ne 'open my $fh, ">out.$." && print $fh $_' input.txt

答案 2 :(得分:1)

使用awk

awk '{print $0 > "out_"++d".txt"}' file

答案 3 :(得分:0)

#!/bin/bash

while IFS= read -r line; do
    echo "$line" > out.$((++i))
done < /path/to/input