sed를 사용하여 파일의 모든 줄을 해당 줄의 첫 번째 패턴으로 바꿉니다.

sed를 사용하여 파일의 모든 줄을 해당 줄의 첫 번째 패턴으로 바꿉니다.

하나의 라이너로 할 수 있습니까?

나는 다음과 같은 결과를 얻었습니다.

"First line" - Description  
" Second line" - Description  
"Third line" - Description  
" Fourth line" - Description  

이 입력은 자동으로 생성됩니다.

각 줄에서 "(quote + space) 의 첫 번째 항목을 (quote)로 바꾸고 싶습니다 . 대체 항목을 전역적으로 적용하면 to 이 "발생할 때마다 변경되므로 sed oneliner를 사용하여 이를 수행할 수 있는지 궁금합니다.line" -line"-

^나는 이렇게 사용해 보았습니다 .

sed -r ':a;N;$!ba;s/(\^\" )/\"/g'

그러나 그것은 작동하지 않으며 아무것도 대체하지 않습니다. 나는 노력했다

sed -r ':a;N;$!ba;s/(^|\" )/\"/g'

그리고 그것은 모든 사건을 대체합니다. 방금 sed를 사용하기 시작했기 때문에 내가 뭔가 잘못하고 있는지 잘 모르겠습니다.

내가 여기서 무엇을 놓치고 있는 걸까요?

답변1

당신은 너무 많이 생각합니다. sed기본값은 줄의 첫 번째 인스턴스(수정자 없이 /g)만 바꾸는 것입니다. 하지만 줄의 시작 부분에 있는 인스턴스만큼 줄의 첫 번째 인스턴스가 필요하지 않기 때문에 여전히 고정하고 싶습니다. 일반적으로 명시적인 행 조작을 사용하려고 시도할 필요가 없습니다(왜?).

sed 's/^" /"/'

답변2

좀 더 일반적인 답변은 geekosaur의 답변에 대해 언급할 수 없기 때문에 ^(라인 앵커의 시작)을 배치하지 않습니다. 예를 들어, A의 첫 번째 항목을 B로 바꾸려면 다음을 수행하십시오.

sed 's/A/B/'

답변3

사용진주

~$ perl -pe 's/^" /"/;'   file 

사용행복하다(이전 Perl_6)

~$ raku -pe 's/^\" \s /"/;'  file

입력 예:

"First line" - Description  
" Second line" - Description  
"Third line" - Description  
" Fourth line" - Description  

샘플 출력(두 가지 코드 예):

"First line" - Description  
"Second line" - Description  
"Third line" - Description  
"Fourth line" - Description  

https://perldoc.perl.org/perlre
https://perldoc.perl.org/perltrap#Sed-Traps
https://docs.raku.org/언어/regexes

관련 정보