Bash 如何循环遍历文件的每一行,在第三个字段后命名文件,然后获取每一行的内容并将其放入文件中
比如说我有一份 这是一只猫 这是一只狗 这是一只熊 我想循环浏览这个文件,读取第四个字段,创建一个具有该名称的文件,然后通过bash将该行推送通过Bash 如何循环遍历文件的每一行,在第三个字段后命名文件,然后获取每一行的内容并将其放入文件中,bash,Bash,比如说我有一份 这是一只猫 这是一只狗 这是一只熊 我想循环浏览这个文件,读取第四个字段,创建一个具有该名称的文件,然后通过bash将该行推送通过 #!/bin/bash while read line do echo $line var1 = `cat $line | awk '{print $4}'` echo $line >> ${var1}.txt done < animals.txt #/bin/bash 读行时 做 回音$线 var1=`cat$li
#!/bin/bash
while read line
do
echo $line
var1 = `cat $line | awk '{print $4}'`
echo $line >> ${var1}.txt
done < animals.txt
#/bin/bash
读行时
做
回音$线
var1=`cat$line | awk'{print$4}'`
echo$line>>${var1}.txt
done
您需要一个名为cat.txt的文件,该文件的行为this is a cat,依此类推。您有两个特定的问题,但离问题不远 1)
cat
用于文件,而不是bash变量。您可以对bash变量使用echo
2) 赋值运算符=
在bash中的左边不能有任何空间
因此,您的第6行现在看起来如下所示:
var1=`echo $line | awk '{print $4}'`
在这一更改之后,在我的系统上,会生成一个名为cat.txt
的文件,该文件的文本与anivers.txt
中的单行相同
$ ls
animals.txt q.sh
$ cat animals.txt
this is a cat this is a dog this is a bear
$ cat q.sh
#!/bin/bash
while read line
do
echo $line
var1=`echo $line | awk '{print $4}'`
echo $line >> ${var1}.txt
done < animals.txt
$ bash q.sh
this is a cat this is a dog this is a bear
$ cat cat.txt
this is a cat this is a dog this is a bear
$ls
animals.txt q.sh
$cat anists.txt
这是一只猫这是一只狗这是一只熊
$cat q.sh
#!/bin/bash
读行时
做
回音$线
var1=`echo$line | awk'{print$4}'`
echo$line>>${var1}.txt
done
有没有办法让你的问题更清楚一点?如果我理解正确,你想记下每四个字吗?然后创建一个文件谁的名字是第四个单词,前三个单词(包括第四个)作为文件的内容?是的,这就是我想做的输入文件中的句子之间应该有新行吗?还是应该是一条线?下面我的答案回答了您的书面问题(它提供了语法的修正,可能会妨碍您自己解决这个问题)。但是bash中的行与字符串解析是非常不同的,所以您必须澄清您的问题。我将对其进行测试,如果正确的话,将授予您信用。ThxI已授予您解决方案的信用。我感谢大家的大力支持!