파일의 특정 줄을 특정 폴더 이름으로 복사하려고 합니다. 그리고 폴더 이름은 행 이름과 동일해야 합니다.
폴더가 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
성적이 포함된 두 번째 열만 반환됩니다.