![일치하는 텍스트를 줄에 추가](https://linux55.com/image/114153/%EC%9D%BC%EC%B9%98%ED%95%98%EB%8A%94%20%ED%85%8D%EC%8A%A4%ED%8A%B8%EB%A5%BC%20%EC%A4%84%EC%97%90%20%EC%B6%94%EA%B0%80.png)
다음을 포함하는 Sample.txt라는 파일이 있다고 가정해 보겠습니다.
ab
bc
ac
grep -E "^b|c$" sample.txt
나에게 다음과 같은 출력을 제공합니다
bc
ac
이제 출력에 필터 문자열을 추가하고 싶습니다. 내가 원하는 출력은
bc,b
ac,c
어떻게 해야 하나요?
답변1
그리고 pcregrep
:
$ pcregrep --om-separator=, -o -o1 -o2 '^(b).*|.*(c)$' sample.txt
bc,b
ac,c
답변2
진주대체 솔루션:
perl -nle 'print "$_,$&" if /^b|c$/' sample.txt
산출:
bc,b
ac,c
$_
- 정규식과 일치하는 문자열을 나타냅니다.$&
- 일치하는 전체 하위 문자열을 반환합니다.
외부와진주스크립트:
내.pl:
#!/usr/bin/perl
use strict;
use warnings;
while (<>) {
chomp $_;
print "$_,$&\n" if /(^b|c$)/;
}
용법:
perl my.pl sample.txt