파일에서 단어를 가져와 다른 기존 파일에 저장하는 방법은 무엇입니까?
내가 시도한 것은
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
이것이 실제로 하는 일은 실행 cat
과 grep
동시성입니다. 표준 입력에 연결된 표준 출력을 cat
읽고 쓰려고 시도합니다 .q1.txt
grep
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