如何遍历文件的每一行,在第三个字段后命名文件,然后将每一行的内容放入文件中

时间:2019-01-17 02:01:33

标签: bash

假设我有一个文件

这是一只猫 这是一条狗 这是熊

我想遍历该文件,阅读第四个字段,创建一个具有该名称的文件,然后通过bash将该行插入。

#!/bin/bash

while read line
do
  echo $line
  var1 = `cat $line | awk '{print $4}'`
  echo $line >> ${var1}.txt
done < animals.txt

想要名为cat.txt的文件,该行是一只猫,依此类推

1 个答案:

答案 0 :(得分:1)

您有两个特定的问题,但是您并不是很遥远。

1)cat用于文件,不是bash变量。您可以将echo用于bash变量。

2)在bash中,赋值运算符=的左侧不能有任何空格。

所以第6行现在看起来像这样:

  var1=`echo $line | awk '{print $4}'`

更改之后,在我的系统上,这将生成一个名为cat.txt的文件,其文本与animals.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