특정 줄을 특정 폴더에 복사하는 방법은 무엇입니까? - 데비안/배쉬/리눅스

특정 줄을 특정 폴더에 복사하는 방법은 무엇입니까? - 데비안/배쉬/리눅스

파일의 특정 줄을 특정 폴더 이름으로 복사하려고 합니다. 그리고 폴더 이름은 행 이름과 동일해야 합니다.

폴더가 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 성적이 포함된 두 번째 열만 반환됩니다.

관련 정보