【问题标题】:Convert stdin to one file per line将标准输入转换为每行一个文件
【发布时间】:2009-12-19 21:16:28
【问题描述】:

我想使用标准的 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

【问题讨论】:

  • 这是使用 sed 和 awk 的命令管道的一部分。我想知道是否可以将每个输入行映射到单独的输出管道。我想我会使用 ennukiller 的解决方案,用我完整的 sed 命令管道替换“echo $line > out.$count”。谢谢!

标签: sed awk


【解决方案1】:
count=0
for line in $(cat input)
do
echo $line > out.$count
let count=count+1
done

【讨论】:

  • 每个单词分割每一行。你应该这样做while read -r line ... done < input
【解决方案2】:
perl -ne 'open my $fh, ">out.$." && print $fh $_' input.txt

【讨论】:

    【解决方案3】:

    使用 awk

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

    【讨论】:

    • 那你做错了。显示您的错误消息,以及什么不起作用。下次提供更多关于失败的信息!
    【解决方案4】:
    #!/bin/bash
    
    while IFS= read -r line; do
        echo "$line" > out.$((++i))
    done < /path/to/input
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-31
      • 2018-03-14
      • 2014-05-10
      • 2013-10-12
      • 1970-01-01
      • 1970-01-01
      • 2016-08-29
      • 2021-08-31
      相关资源
      最近更新 更多