如何将特定行复制到特定文件夹? - Debian/Bash/Linux

如何将特定行复制到特定文件夹? - Debian/Bash/Linux

我正在尝试将文件中的特定行复制到特定的文件夹名称中。并且该文件夹的名称必须与该行的名称相同。

我有 3 个文件夹:

  • /home/my_username/bin :其中包含一个文件,这是我的脚本文件:切换菜单
  • /home/student :其中包含我的 2 个学生文件:瑞克和乔什 在这两个文件中,都有所有受试者姓名,后面是他们收到的相应分数。
  • /home/result :其中包含我的 2 个科目课程文件:数学和历史 在这两个文件中,都有学生姓名,后面是他们针对该特定课程主题获得的分数。

这是我的代码,以便更好地理解:

1. My script file | Inside of /home/my_username/bin  

#! /bin/bash

title="Switch Menu"
prompt="Please pick an option :"

echo "$title"
PS3="$prompt"

select opt in "${options[@]}"
do
 case $REPLY in
              1) cat /home/result/MATH >>/home/student/Rick;;
              2) echo "Goodbye !"; break;;
              3) echo "The option $REPLY does not exit !";;
 esac
done

2. My student files | Inside of /home/student

-rw-r--r-- 1 username username 0 month date time Rick
-rw-r--r-- 1 username username 0 month date time Josh

3. My result files | Inside of /home/result

-rw-r--r-- 1 username username 0 month date time MATH
-rw-r--r-- 1 username username 0 month date time HISTORY

cat MATH | Gives me 

Rick 7
Josh 14

cat HISTORY| Gives me 

Rick 18
Josh 11

现在,如果我运行我的脚本:切换菜单,

然后输入选项1,它会简单地复制我的所有内容数学文件,在我的里面瑞克文件。

虽然在我的数学文件中,也有分数乔什

不应该是这样的。

应该是这样的:一旦我点击“1”,它就会复制我各自学生的分数。

因此对于这个例子,它应该复制:

  • 瑞克 7,位于 Rick 文件内。
  • 乔什 14,位于 Josh 文件内。

答案1

如果我理解正确的话,您需要将结果文件(例如 math.txt)中的成绩添加到相应的学生文件(例如 rick.txt、josh.txt)中。

你现在所做的事情 cat /home/result/MATH >>/home/student/Rick;; 是不完整的。您需要找到一种方法来过滤和处理从数学文件读取的行中的信息。我不想给你一个完整的解决方案,因为这对我来说听起来像是家庭作业。但我会给你举个例子:

sh$ cat math.txt Mike 12 Romeo 8 Peter 13 以下命令

sh$ grep "Mike" math.txt Mike 12 只会返回一行。

此外,您可以将行拆分为单列。

sh$ grep "Mike" math.txt | cut -d' ' -f2 12 只会返回带有成绩的第二列。

相关内容