假设我有一个文件
这是一只猫 这是一条狗 这是熊
我想遍历该文件,阅读第四个字段,创建一个具有该名称的文件,然后通过bash将该行插入。
#!/bin/bash
while read line
do
echo $line
var1 = `cat $line | awk '{print $4}'`
echo $line >> ${var1}.txt
done < animals.txt
想要名为cat.txt的文件,该行是一只猫,依此类推
答案 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