다음 내용이 포함된 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
). 하지만 이는 파일이잘린다음에 추가하는 대신 동일한 단어를 처리합니다. 두 코드 모두에서 출력 파일은 첫 번째 출력에서 잘립니다.