파일에서 텍스트를 찾아 다른 파일에 복사하는 명령이 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
sed
stdout
기본 출력은 다음과 같습니다. 파일로 출력하려면 연산자(새 파일을 생성하려는 경우)를 사용하거나 파일로 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