누구든지 라인의 시작이나 끝과 일치하는 정규식을 말할 수 있습니까? 예 : sed 's/[regex]/"/g' filehere
을 사용하면 출력은 따옴표로 묶인 각 줄이됩니까? 내가 [\^$]
과 [\^\n]
을 시도했지만 둘 다 작동하지 않는 것 같았습니다. 아마 분명 뭔가 빠진거야, 나는이한 줄의 시작과 끝을 일치시키는 정규식?
답변
시도하는 새로운 해요 :
sed -e 's/^/"/' -e 's/$/"/' file
완벽하게 작동했습니다! 도움을 주셔서 감사합니다 :) –
줄의 시작이나 끝이 줄에 여러 번 나타나지 않으므로 "g"가 필요 없습니다. –
는 시작과 모든 라인의 끝 부분에 따옴표를 추가하려면 단순히 :
sed 's/.*/"&"/g'
재 그래도 각 줄의 시작이나 끝과 일치 시키려고했다면 :
sed -r 's/^|$/"/g'
그 an ERE (ena ble "-r") GNU sed에서는 작동하지만 오래된 seds에서는 작동하지 않습니다.
matthias의 반응은 완벽하지만, 역 참조를 사용하여이를 수행 할 수도 있습니다. 당신이 정규 표현식을 배우는 경우, 그들은 알고있는 편리한 것입니다. 라인 (^
)의 시작에 둘러싸여 아무것도 (.*
)과 끝을 일치 의미, 그 정규식의 중심에
sed 's/\(^.*$\)/"\1"/g' file
^.*$
입니다 : 여기
는이 역 참조를 사용하여 수행 할 것입니다 방법 줄의 ($
), 이는 실제로 전체 줄마다 일치한다는 것을 의미합니다.
해당 용어를 괄호 안에 넣으면 나중에 참조 할 수있는 역 참조를 만듭니다 (바꾸기 패턴에서). 그러나 sed가 리터럴 괄호 대신에 역 참조를 만들려고한다는 것을 깨닫기 위해서는 백 슬래시로 이스케이프 처리해야합니다. 따라서 우리는 검색 패턴으로 \(^.*$\)
으로 끝납니다.
교체 패턴은 단순히 이중 인용 부호 다음에 \1
이며, 이는 우리의 역 참조입니다 (괄호로 묶인 첫 번째 패턴 일치를 참조하므로 1). 마지막 큰 따옴표를 추가하여 "\1"
이되도록하십시오.
^. * $는. *와 같으며^및 $는 중복됩니다. 또한 전체 RE가 일치 할 때 특정 일치하는 문자열을 역 참조 할 필요가 없습니다. –
동의했지만, 명확하게하기 위해 거기에 던져 넣었습니다. 내 대답은 문제의 특정 시나리오를 다루는 방법보다는 역 참조를 사용하는 방법을 보여주기위한 것이 었습니다. – nullrevolution
괜찮 았지만 자신의 특정 질문에 대한 답을 OP에게 보여주는 것이 유용 할 수 있으므로 이것이 최선의 방법이라고 생각하지 않습니다. –
질문에 필요한 모든 태그를 사용하십시오. 정규 표현식은 광범위한 용어입니다. – inhan