답변
대체 솔루션으로 /m
수정 자 없이는 긍정적 인 lookbehind를 사용할 수 있습니다. 각 /g
이중 공백 \s{2}
뒤에입니다 위의 예제 코드에서
$_ = " 123\n 456\n 789";
s/(?:(?<=^)|(?<=\n))\s{2}/\t/g;
print $_;
>> 이러한 접근 방식은 단지 라인의 시작하지, 다른 뭔가를 확인해야합니다 경우에 유용 할 수 있으므로 \m
수정 도움이되지 것입니다 때 문자열 (?<=^)
또는 (?: .. | ..)
새 줄 문자 (?<=\n)
의 시작 부분은 \t
으로 바뀝니다.
어때 대략 this?
my $test_string = " some test stuff\ndivided to\n provide the challenge";
$test_string =~ s/^[ ]{2}/\t/gm;
print $test_string;
설명 : \s
실제로 하나의 기호 별칭이 아니라 문자 '공백'클래스 : 그것은 \n\
예를 들면 \t
모두 포함됩니다. 공백 만 바꾸려면 정규식에서 공백을 사용하십시오. 나에게 대신 /^ {2}/...
의 문자 클래스를 (설정 당신은 할 필요가 없습니다, 더 읽기 (그리고)를 /x
modifier으로 중단되지 않습니다.
을 게다가, 당신은 단지 이 공간 기호를 바꾸려면 +
정량을 사용
UPDATE를 :. 당신이 각 두 개의 공백을 대체해야하는 경우, 내가 대신를 사용하는 것 같아요
$test_string =~ s#^((?:[ ]{2})+)#"\t" x (length($1)/2)#gme;
... 나 이케 가미의 대답처럼 \ G 앵커 .
네 개의 선행 공백에는 작동하지 않습니다. 광범위한 설명은 – ikegami
수량 한정자는 "하나 이상"을 의미하며 "정확하게 두 개의 공백 문자"를 의미하는 \s{2}
에 적용됩니다. 간단한 예를 들어, 0에서 10 사이의 공백 문자열을 생성하고 비슷한 패턴으로 그들을 일치시킵니다.
#! /usr/bin/env perl
use strict;
use warnings;
for (0 .. 10) {
$_ = " " x $_;
printf "%-13s %s\n", "[$_]:", /^(\s{2})+$/ ? "match!" : "no match.";
}
출력 :
서면으로[]: no match. [ ]: no match. [ ]: match! [ ]: no match. [ ]: match! [ ]: no match. [ ]: match! [ ]: no match. [ ]: match! [ ]: no match. [ ]: match!
, 당신의 패턴을 논리적 시작 -의 라인에 공백 문자의 긍정적 인 짝수에 대해 하나의 탭 문자를 대체합니다.
코드의 전반적인 내용을 제공하지 않습니다. /m
스위치와 /g
스위치를 사용하여 전체 운영을 원하는 파일의 전체 내용을 일부 텍스트로 가정합니다. 아래의 프로그램은 here-document를 사용하여 가정 된 상황을 시뮬레이트하고 각 줄의 처음 두 칸만 TAB로 바꿉니다.
#! /usr/bin/env perl
use strict;
use warnings;
$_ = <<EOText;
Three
Two
Four
Five
Zero
One
EOText
s/^ /\t/mg;
# for display purposes only
s/\t/\\t/g;
print;
출력 : 여분이 s///
코드에서 유지하지 않을 주석 것을
\t Three \tTwo \t Four \t Five Zero One
참고. 공백 문자와 탭 문자 사이에 대비를 추가합니다.
이것이 프로그램의 유일한 목적이라면, 쉬운 한 줄자가됩니다. 당신이 경우
$line =~ s/\G[ ]{2}/\t/g;
: 당신이 라인으로 파일 라인을 읽는 경우 장소에
$ perl -pe 's/^ /\t/' input-file >output-file
편집을 사용하여, 수정 된 내용으로 새 파일을 만들려면
$ perl -i.bak -pe 's/^ /\t/' input-file
+1입니다.) – raina77ow
- 1. Eclipse에서 임의로 탭을 공백으로 바꾸기
- 2. 공백을 공백으로 바꾸기
- 3. 본문 점을 공백으로 바꾸기
- 4. 정규식을 사용하여 줄 바꾸기/공백으로 바꾸기
- 5. 닫기 태그를 xsl의 공백으로 바꾸기
- 6. JTabbedPane의 탭으로 탭 바꾸기
- 7. NSTextView : 모든 탭 바꾸기
- 8. 목록 괄호 제거 및 쉼표를 공백으로 바꾸기
- 9. Bash grep/echo n을 공백으로 바꾸기
- 10. 레일스가있는 JQuery 탭 : 탭 내용 바꾸기
- 11. 문자열로 된 URL 바꾸기 - Perl
- 12. 탭 컨트롤에서 텍스트 줄 바꾸기
- 13. Perl 찾기 및 바꾸기 파일 내에서 하나의 변수로 바꾸기
- 14. Ruby에서 공백으로 공백으로 변환
- 15. awk는 공백으로
- 16. Perl : 현재 위치에서 줄 끝까지 패턴 바꾸기
- 17. Perl Regexes - 특정 일치 항목 바꾸기
- 18. Perl Regex - 찾기/바꾸기 그룹을 축약합니다.
- 19. 모든 쉼표를 공백으로 바꾸기 - S/R과 Unix 명령?
- 20. ActionBar 탭 - 세부 조각으로 목록 조각 바꾸기
- 21. XML 노드 형식 (줄 바꾸기/탭 추가)?
- 22. JQuery UI 탭 - 탭과 내용 바꾸기
- 23. Dojo 컨텐츠 탭 제목을 공백으로 어떻게 설정할 수 있습니까?
- 24. 탭/공백으로 구분 된 줄을 중첩 된 배열로 변환합니다.
- 25. NSString에로드하기 전에 탭 (\ t)을 공백으로 변환하는 방법이 있습니까?
- 26. 다른 탭/공백으로 개별 파일 또는 프로젝트를 여는 방법
- 27. HTML에서 4 자리 공백으로 PRE 문자의 탭 문자를 렌더링 하시겠습니까?
- 28. Jsoup : 새 줄 => 새 줄 바꾸기 = 공백으로 시작하는 줄 바꾸기
- 29. intraline 탭을 공백으로 대체하여 정렬을 유지하려면 어떻게해야합니까?
- 30. Perl, Ruby 또는 PHP로 PDF의 문자열 검색 및 바꾸기
'unexp 및 -t 2 ' –
WHOLE 문자열을 대체 할 때마다 각 줄의 시작 부분에만 필요합니다. – snoofkin
'--first-only' 사용 (gnu unexpand) –