Perl 또는 ubuntu 명령을 사용하여 텍스트 파일의 특정 단어를 바꾸고 결과를 여러 텍스트 파일에 저장하고 싶습니까?

Perl 또는 ubuntu 명령을 사용하여 텍스트 파일의 특정 단어를 바꾸고 결과를 여러 텍스트 파일에 저장하고 싶습니까?

다음 내용이 포함된 results.txt 파일이 있습니다.

the word: word1 is a not detected

다음 단어 목록이 포함된 txt 파일이 있습니다.

word1 word2 word3 ...

동일한 단어 이름으로 txt 파일을 생성하고 "word1"을 다음과 같이 다른 txt 파일의 단어로 한 줄씩 바꾸고 싶습니다.

file1: resultword1.txt에는 다음이 포함됩니다.

the word: word1 is a not detected

파일2: resultword2.txt에는 다음이 포함됩니다.

the word: word2 is a not detected

파일3: resultword3.txt에는 다음이 포함됩니다.

the word: word3 is a not detected

....등

답변1

단어 목록에 공백으로 구분된 단어가 포함되어 있다고 가정합니다.

awk '{ for (i = 1; i <= NF; ++i ) printf "the word: %s is a not detected\n", $i >("result" $i ".txt") }' words

awk명령은 파일에서 공백으로 구분된 모든 단어를 반복합니다 words. 각 단어( $i)에 대해 해당 단어가 올바른 위치에 삽입된 문장을 인쇄합니다. 출력은 단어 result앞뒤 에 .txt문자열이 추가되어 이름이 지정된 파일로 전송됩니다 .

이름 충돌 테스트는 수행되지 않았습니다.

GNU를 사용하지 않는 시스템에서는 awk다음을 수행할 수 있습니다.

awk '{ for (i = 1; i <= NF; ++i ) {
    fname = "result" $i ".txt"
    printf "the word: %s is a not detected\n", $i >fname
    close(fname)
}' words

...잠시 후에 파일 설명자가 부족해지지 않도록 합니다(GNU가 이 문제를 내부적으로 적절하게 처리한다고 믿습니다 awk). 하지만 이는 파일이잘린다음에 추가하는 대신 동일한 단어를 처리합니다. 두 코드 모두에서 출력 파일은 첫 번째 출력에서 ​​잘립니다.

관련 정보