从制表符分隔的文本文件中读取行,以使用bash生成新文件

从制表符分隔的文本文件中读取行,以使用bash生成新文件,bash,tab-delimited-text,Bash,Tab Delimited Text,我有一个带有多行的大制表符分隔文本(.txt)文件。我想做的是从这个txt文件中获取每一行,并使其成为自己的单独文件 例如,如果我的文本文件如下所示: 11111111 22222222 33333333 我想要三个文本文件,一个是“11111111”,另一个是“2222222”,另一个是“33333333”。最明显的方法是使用split: split -l 1 file out 这将文件拆分为单独的文件、outaa、outab和outac,每个文件包含一行输入文件 后缀的默认长度为2,但您

我有一个带有多行的大制表符分隔文本(.txt)文件。我想做的是从这个txt文件中获取每一行,并使其成为自己的单独文件

例如,如果我的文本文件如下所示:

11111111
22222222
33333333

我想要三个文本文件,一个是“11111111”,另一个是“2222222”,另一个是“33333333”。最明显的方法是使用
split

split -l 1 file out
这将
文件
拆分为单独的文件、
outaa
outab
outac
,每个文件包含一行输入文件

后缀的默认长度为2,但您可以使用
-a
开关进行更改。例如,
split-a 1-l 1文件out
将创建文件
outa
outb
outc


查看以查看更多可用于控制输出的选项。

最明显的方法是使用
split

split -l 1 file out
这将
文件
拆分为单独的文件、
outaa
outab
outac
,每个文件包含一行输入文件

后缀的默认长度为2,但您可以使用
-a
开关进行更改。例如,
split-a 1-l 1文件out
将创建文件
outa
outb
outc


查看以查看更多可用于控制输出的选项。

最明显的方法是使用
split

split -l 1 file out
这将
文件
拆分为单独的文件、
outaa
outab
outac
,每个文件包含一行输入文件

后缀的默认长度为2,但您可以使用
-a
开关进行更改。例如,
split-a 1-l 1文件out
将创建文件
outa
outb
outc


查看以查看更多可用于控制输出的选项。

最明显的方法是使用
split

split -l 1 file out
这将
文件
拆分为单独的文件、
outaa
outab
outac
,每个文件包含一行输入文件

后缀的默认长度为2,但您可以使用
-a
开关进行更改。例如,
split-a 1-l 1文件out
将创建文件
outa
outb
outc

查看更多可用于控制输出的选项。

这是怎么回事

file=$1
i=0
while read line    // reads file line by line
do
echo $line > "file$i" //writes each line to a file until last line is reached
((i++))
done < aline.txt
这个怎么样

file=$1
i=0
while read line    // reads file line by line
do
echo $line > "file$i" //writes each line to a file until last line is reached
((i++))
done < aline.txt
这个怎么样

file=$1
i=0
while read line    // reads file line by line
do
echo $line > "file$i" //writes each line to a file until last line is reached
((i++))
done < aline.txt
这个怎么样

file=$1
i=0
while read line    // reads file line by line
do
echo $line > "file$i" //writes each line to a file until last line is reached
((i++))
done < aline.txt


到目前为止你尝试了什么?我不完全确定如何开始。我知道如何做相反的事情,将单个文件读入一个大文件。我觉得我陷入困境的地方是我不知道如何阅读多行文字。我是否将每一行都设为变量?我怎么在队伍的尽头停下来?等等。您希望在单独的文件中使用哪种名称。生成新文件的规则是什么<代码>如果(prevLine!=currentLine){make_new_file currentLine}prevLine=currentLine…?祝你好运。你有试过任何答案吗?他们对你有用吗,或者你需要任何额外的澄清吗?到目前为止你尝试了什么?我不完全确定如何开始。我知道如何做相反的事情,将单个文件读入一个大文件。我觉得我陷入困境的地方是我不知道如何阅读多行文字。我是否将每一行都设为变量?我怎么在队伍的尽头停下来?等等。您希望在单独的文件中使用哪种名称。生成新文件的规则是什么<代码>如果(prevLine!=currentLine){make_new_file currentLine}prevLine=currentLine…?祝你好运。你有试过任何答案吗?他们对你有用吗,或者你需要任何额外的澄清吗?到目前为止你尝试了什么?我不完全确定如何开始。我知道如何做相反的事情,将单个文件读入一个大文件。我觉得我陷入困境的地方是我不知道如何阅读多行文字。我是否将每一行都设为变量?我怎么在队伍的尽头停下来?等等。您希望在单独的文件中使用哪种名称。生成新文件的规则是什么<代码>如果(prevLine!=currentLine){make_new_file currentLine}prevLine=currentLine…?祝你好运。你有试过任何答案吗?他们对你有用吗,或者你需要任何额外的澄清吗?到目前为止你尝试了什么?我不完全确定如何开始。我知道如何做相反的事情,将单个文件读入一个大文件。我觉得我陷入困境的地方是我不知道如何阅读多行文字。我是否将每一行都设为变量?我怎么在队伍的尽头停下来?等等。您希望在单独的文件中使用哪种名称。生成新文件的规则是什么<代码>如果(prevLine!=currentLine){make_new_file currentLine}prevLine=currentLine…?祝你好运。你有试过任何答案吗?他们是否为您工作,或者您是否需要任何额外的澄清?我认为这是最有可能的工作,但当我尝试这样做时,它会创建一个输出文件(outa,最后一行是aka 33333)。我想这可能是因为我用excel创建了文本文件?当我
cat
原始文件时,它也只显示最后一行…有没有关于如何继续的建议?所以你在Windows上的Excel中创建了这些文件,现在你正试图在Linux中拆分它们?听起来你对行尾(两者不同)有问题。您应该首先尝试在文件上运行
dos2unix
,以转换行尾。我认为这很可能有效,但当我尝试此操作时,它会创建一个输出文件(最后一行为33333的outa)。我想这可能是因为我用excel创建了文本文件?当I
cat
原始文件