나는 이것을 사용하고 싶습니다 :Perl에서 비어 있지 않은 모든 줄의 처음과 끝에 문자를 추가하는 방법은 무엇입니까?
perl -pi -e 's/^(.*)$/\"$1\",/g' /path/to/your/file
를 텍스트 파일의 각 줄의 끝에서, "라인의 시작 부분에"추가하십시오. 문제는 일부 줄이 단지 빈 줄이며이 줄이 바뀌길 원하지 않는다는 것입니다. 어떤 아이디어를 어떻게 위의 코드를 수정하거나 어쩌면 완전히 다르게합니까?
나는 이것을 사용하고 싶습니다 :Perl에서 비어 있지 않은 모든 줄의 처음과 끝에 문자를 추가하는 방법은 무엇입니까?
perl -pi -e 's/^(.*)$/\"$1\",/g' /path/to/your/file
를 텍스트 파일의 각 줄의 끝에서, "라인의 시작 부분에"추가하십시오. 문제는 일부 줄이 단지 빈 줄이며이 줄이 바뀌길 원하지 않는다는 것입니다. 어떤 아이디어를 어떻게 위의 코드를 수정하거나 어쩌면 완전히 다르게합니까?
다른 사람들은 이미 그 스타일을 살펴 보자, 정규식 구문 문제를 대답했다.
s/^(.*)$/\"$1\",/g
이 정규식 /// 당신의 두뇌 출혈을 만드는 곳 "이쑤시개 증후군을 기대어"에서 겪고있다. 균형 잡힌 구분 기호의
s{^ (.+) $}{ "$1", }x;
사용, 공간 것들 밖으로 불필요한 backwhacks의 제거에/X 수정 읽기 정규식이 훨씬 쉬워집니다. 또한이 정규식은 한 줄에 한 번만 일치하므로/g는 필요하지 않습니다.
perl -pi -e 's/^(.+)$/\"$1\",/g' /your/file
. *는 0 개 이상의 문자와 일치합니다. . +는 1 또는 그 이상과 일치합니다.
.+
을 .*\S.*
으로 바꾸고 비 공백 문자가 포함 된 줄만 인용 할 수 있습니다.
변경. * to. +
즉, 줄은 1 자 이상이어야합니다. . *는 0 개 이상의 문자를 나타냅니다.
당신은 너무처럼 +
(1 이상)으로 *
(0 이상)를 대체 할 수 있어야한다 :
perl -pi -e 's/^(.+)$/\"$1\",/g' /path/to/your/file
sed -r 's/(.+)/"\1"/' /path/to/your/file
당신이하고있는 모든 전면에 뭔가를 추가 그리고 라인의 뒤로, 그래서 정규식에 대한 필요가 없습니다. 그냥 그들을 인쇄하십시오. 파일이 크면 그러한 작업을위한 정규 표현식은 비싸다.
둔한
$ awk 'NF{print "\042" $0 "\042,"}' file
또는 Perl
$ perl -ne 'chomp;print "\042$_\042,\n" if ($_ ne "") ' file
빈 줄도 수정하지 않습니까? 그는 그가 그것을 원하지 않는다고 말했다. –
쉽게 수정할 수 있습니다. done – ghostdog74
Perl 버전에서, 단지 pedantic이 되려면'if $ _ ne '대신'if $ _ ne' '를 원한다. '$ _'은 비어 있지 않은 특정 행 (특히, 고독한 0을 포함하는 행)에 대해 false로 평가됩니다. –
그게 더 많은 읽을 수있게, 감사합니다! – Phil