파일에서 단어를 가져와 다른 기존 파일에 저장하는 방법은 무엇입니까?

파일에서 단어를 가져와 다른 기존 파일에 저장하는 방법은 무엇입니까?

파일에서 단어를 가져와 다른 기존 파일에 저장하는 방법은 무엇입니까?

내가 시도한 것은

cat q1.txt | grep -i "osx" test.txt

test.txt에서 grep하여 q1에 저장하고 싶지만 이 방법과 다른 방법이 작동하지 않습니다.

답변1

이를 완전히 제거한 cat다음 출력을 grep결과 파일로 리디렉션해야 합니다.

grep -i "osx" test.txt >q1.txt

test.txt그러면 문자열이 포함된 줄을 검색하고 osx(대소문자 구분 안 함) 해당 줄을 q1.txt. 파일이 q1.txt존재하는 경우 출력이 저장되기 전에 잘립니다(비워집니다).

출력을 파일 끝에 추가하려면 >>대신 >리디렉션 연산자로 사용하세요.


당신의 명령:

cat q1.txt | grep -i "osx" test.txt

이것이 실제로 하는 일은 실행 catgrep동시성입니다. 표준 입력에 연결된 표준 출력을 cat읽고 쓰려고 시도합니다 .q1.txtgrep

grep그러나 읽을 파일을 제공하면 cat파일로 전송된 모든 내용이 완전히 무시됩니다.

마지막으로 test.txt이 문자열을 포함하는 모든 줄이 osx터미널에 출력됩니다.


cat일반적으로 "사용되지 않는 사용 "(또는 때로는 "UUoC") 이라고 하는 것이 있는데 , 이는 cat호출이 완전히 제거되고 파일을 다른 도구에서 직접 읽을 수 있음을 의미합니다.

극단적인 예는 다음과 같습니다.

cat test.txt | cat | cat | cat | grep -i "osx" | cat | cat >q1.txt

하지만 그것뿐이라고 해도

cat test.txt | grep -i "osx" >q1.txt

grep위에 표시된 대로 자체적으로 파일을 완벽하게 읽을 수 있으므로 쓸모가 없습니다 . 설령 그럴지라도아니요test.txt스스로 열어서 쓸 수 있음

grep -i "osx" <test.txt >q1.txt

표준 입력은 파일에서 나와야 하고 표준 출력은 파일 test.txt로 가야 한다고 말합니다.q1.txt

데이터를 연결할 때만 사용됩니다 cat(주 목적). 다른 용도도 있지만 cat이 질문의 범위를 벗어납니다.


관련된:

답변2

파일을 검색하고 결과를 "path/storage_file"에 쓰는 데 사용됩니다.

grep -in pattern file > path/storage_file

파일 내에서 검색하고 결과를 "path/storage_file"에 추가하려면(>>사용):

grep -in pattern file >> path/storage_file

전체 디렉터리를 검색하고 결과를 "path/storage_file"에 쓰려면:

grep -in pattern * > path/storage_file

전체 디렉터리를 검색하고 결과를 "path/storage_file"에 추가하려면(>>사용):

grep -in pattern * >> path/storage_file

관련 정보