파일에서 텍스트를 찾아 다른 파일에 복사

파일에서 텍스트를 찾아 다른 파일에 복사

파일에서 텍스트를 찾아 다른 파일에 복사하는 명령이 Linux에 있습니까?

를 사용하면 sed -i텍스트를 찾을 수 있지만 전체 줄을 다른 파일에 복사하는 방법은 무엇입니까?

답변1

사용하지 마세요 sed -i. 원본 파일을 덮어쓰게 됩니다.

대신 grep을 사용하세요.

grep "text to find" input.txt > output.txt

답변2

질문에 대해 제가 이해한 바에 따르면, 운영자는 전체 텍스트 줄을 찾는 것이 아니라 텍스트를 찾아서 다른 파일에 넣기를 원합니다.

을 사용하겠습니다 grep -o 'pattern' input_file > output_file.

배너 -o:

-o, --only-matching
       Print  only  the  matched  (non-empty) parts of a matching line, 
       with each such part on a separateoutput line.

예:

$ cat tmp
01/21/21 - foo
01/22/21 - bar
01/23/21 - foo
01/24/21 - bar

$ grep -o 'foo' tmp > foo

$ cat foo
foo
foo

답변3

sedstdout기본 출력은 다음과 같습니다. 파일로 출력하려면 연산자(새 파일을 생성하려는 경우)를 사용하거나 파일로 sed리디렉션 연산자(출력을 기존 파일에 추가하려는 경우)를 사용하세요 stdout.>>>

sed '/text/' inputfile > outputfile
sed '/text/' inputfile >> outputfile

답변4

sed -i내부 편집의 경우:

~에서man sed

-i[SUFFIX], --in-place[=SUFFIX]
      edit files in place (makes backup if SUFFIX supplied)

sed좋은 옵션이지만 다음을 사용할 수도 있습니다.awk

 awk '/<your_pattern>/' foo > bar

$ cat foo
foo bar foobar
bar foo bar
bar foo

$ awk '/foobar/' foo > bar

$ cat bar
foo bar foobar

관련 정보