Shell 脚本将文件的每一行存储到单独的文件中

1 linux bash shell awk sh

我正在尝试获取文件(./answer/answerOnly.txt)的行内容以分隔文件。

给定->answerOnly.txt:

Ans1
Ans2
Ans3
Ans4
Run Code Online (Sandbox Code Playgroud)

预期输出 -> 要创建的文件

~/Desktop/miniPro$ ls distributedAnswers/
1.txt
2.txt
3.txt
4.txt
Run Code Online (Sandbox Code Playgroud)

1.txt 包含:

~/Desktop/miniPro$ cat distributedAnswers/1.txt
Ans1
Run Code Online (Sandbox Code Playgroud)

我已经尝试过->

for (( i=0;i<count;i++ ))
do
 echo -n `awk 'NR==$i' answer/answerOnly.txt  &> ./distributedAnswers/$i.txt`
done
Run Code Online (Sandbox Code Playgroud)

输出:正在创建空文件

观察:“awk 'NR==$i'” 只接受数字。需要一种“NR==”的方式吗?接受变量值。

谢谢并感谢您的帮助。

bad*_*ker 5

为什么不使用split

例如:

split -d -l 1 answersOnly.txt  answer_ --additional-suffix=.txt --suffix-length=1 --numeric-suffixes=1
Run Code Online (Sandbox Code Playgroud)

怎么运行的:

  • -d使用数值
  • -l按行数分割,这里1
  • answerOnly是你的输入文件
  • answer是你的输出文件
  • --additional-suffix=.txt附加answer.txt
  • --suffix-length添加长度后缀N
  • --numeric-suffixes与-d相同,但允许设置起始值

或者...使用bash

就是这样:

split -d -l 1 answersOnly.txt  answer_ --additional-suffix=.txt --suffix-length=1 --numeric-suffixes=1
Run Code Online (Sandbox Code Playgroud)

"$1"你的源文件在哪里。