한 파일의 특정 내용을 다른 파일의 첫 번째 줄로 바꾸는 방법은 무엇입니까?

한 파일의 특정 내용을 다른 파일의 첫 번째 줄로 바꾸는 방법은 무엇입니까?

두 개의 파일이 있습니다 one.txt.sample.txt

one.txt다음과 같은 내용이 있습니다.

AAAA
BBBB
CCCC
DDDD

sample.txt구체적인 내용은 다음과 같습니다.

>>XXXXXXX<<

내가 어떻게 할 수있는:

  1. one.txt"XXXXXXX"를 ?로 바꾸세요. 첫 번째 줄
  2. one.txt?의 첫 번째 줄을 삭제하세요.
  3. one.txt이름을 다음 으로 바꾸시겠습니까 AAAA.txt?

리눅스 명령줄에서?

여기에 이미지 설명을 입력하세요.

답변1

한 가지 방법은 다음과 같습니다.

## save the first line of one.txt in the variable $string
string=$(head -n1 one.txt)
## delete the first line of one.txt
sed -i '1d' one.txt
## replace the Xs in `>>XXXXX<<` with the contents of `$string` 
## and save as the new file "$string.txt" (AAAA.txt)
sed "s/>>XXXXXXX<</>>$string<</" sample.txt > $string.txt

>>XXXXXX<<이는 모든 행에서 단 한 번만 발생한다고 가정합니다 sample.txt. 한 줄에 둘 이상이 있을 수 있는 경우 위 명령은 각 줄의 첫 번째 명령만 바꿉니다. 이들 모두를 바꾸려면 다음 명령을 사용하십시오.

sed "s/>>XXXXXXX<</>>$string<</g" sample.txt > $string.txt

원래 질문에는 각 줄 끝에 공백이 있습니다 one.txt. 실제 파일의 경우에 추가하기 전에 공백을 제거해야 하는 경우 sample.txt다음을 사용하세요.

string=$(head -n1 one.txt | sed 's/ *$//')

그런 다음 위와 동일한 명령을 실행합니다.

관련 정보