【问题标题】:Split a file by lines into specific subfolders in bash将文件按行拆分到 bash 中的特定子文件夹中
【发布时间】:2021-06-02 23:55:36
【问题描述】:

我有一个包含五行的文本文件parent.txt

line 1
line 2
line 3
line 4
line 5

我想将该文件拆分为名为 child1...child5 的单独文件,为此我可以使用 split 这样的命令

spit -l 1 -d parent.txt child

但是,我希望每个新创建的文件都位于具有相同名称的文件夹中(例如,文件 child1 将位于文件夹 child1 中),但我不知道该怎么做。

暂时,我是这样写的:

n=`cat parent.txt | wc -l`;
for i in `seq 1 $n`;
do
    mkdir -p $(printf "child%04i" $i);
    cd $(printf "child%04i" $i);
    split -l 1 -a 4 --numeric-suffixes=1 parent.txt child
    cd ..
done

但它会输出每个文件夹中的每个子文件,这不是我需要的。

【问题讨论】:

    标签: bash awk text split


    【解决方案1】:

    我不知道该怎么做。

    仅针对每一行,创建一个名为child + 行号的目录,然后将该行打印到正确的文件中。

    在 awk 中:

    awk '{system("mkdir child"NR); print > "child"NR"/child"NR}' parent.txt
    

    在 bash 中会慢 1000 倍:

    nr=1
    while IFS= read -r line; do
       mkdir "child$nr"
       printf "%s\n" "$line" > "child$nr/child$nr"
       nr=$((nr + 1))
    done < parent.txt
    

    【讨论】:

      猜你喜欢
      • 2018-03-19
      • 1970-01-01
      • 2015-02-13
      • 1970-01-01
      • 2022-11-04
      • 2017-05-04
      • 2015-05-20
      • 2016-07-16
      • 1970-01-01
      相关资源
      最近更新 更多