첫 번째 문자를 제외한 모든 문자 바꾸기 [중복]

첫 번째 문자를 제외한 모든 문자 바꾸기 [중복]

다음과 같은 텍스트 파일이 있습니다.

test1,test2,test3
test4,test5
test6,test7,test8,test9,test10
test11,test12,test13,test14

쉼표를 세미콜론으로 바꾸는 방법, 두 번째부터 시작하세요(그리고 마지막 것까지 계속)?

다음 출력을 얻고 싶습니다.

test1,test2;test3
test4,test5
test6,test7;test8;test9;test10
test11,test12;test13;test14

답변1

이것을 사용하면 이 작업을 수행할 수 있습니다.

$ sed -e 's/,/;/g' -e 's/;/,/1' infile
test1,test2;test3
test4,test5
test6,test7;test8;test9;test10
test11,test12;test13;test14

설명하다

  • s/,/;/g다음 항목을 모두 바꿉니다 ,.;

  • s/;/,/1첫 번째 항목을 ;다음으로 바꿉니다.,


GNU가 있다면 sed간단하고 사용하기 쉬운 다음을 시도해 볼 수도 있습니다.

sed 's/,/;/2g' infile

답변2

입력에 이미 세미콜론이 있을 수 있다면 주의해야 합니다.

$ sed 's/,/\n/g; s/\n/,/; s/\n/;/g' input
test1,test2;test3
test4,test5
test6,test7;test8;test9;test10
test11,test12;test13;test14

sed는 입력을 한 줄씩 읽기 때문에 일반 입력에는 개행 문자가 없습니다. 따라서 모든 쉼표를 개행 문자로 바꿀 수 있으며 혼란이 없을 것임을 알고 있습니다. 다음으로 첫 번째 개행 문자를 쉼표로 복원합니다. 마지막으로 나머지 줄 바꿈을 세미콜론으로 바꿉니다.

더 자세하게:

  • s/,/\n/g모든 쉼표를 줄 바꿈으로 바꾸십시오.

  • s/\n/,/첫 번째 개행 문자를 쉼표로 바꿉니다.

  • s/\n/;/g나머지 줄 바꿈을 세미콜론으로 바꾸십시오.

답변3

사용 awk:

awk '{gsub(",", ";"); sub(";", ","); print}' file.txt
  • gsub(",", ";")모두 ,다음으로 교체;

  • sub(";", ",")첫 번째 것을 ;다음으로 바꾸십시오.,

예:

% cat file.txt
test1,test2,test3
test4,test5
test6,test7,test8,test9,test10
test11,test12,test13,test14

% awk '{gsub(",", ";"); sub(";", ","); print}' file.txt
test1,test2;test3
test4,test5
test6,test7;test8;test9;test10
test11,test12;test13;test14

답변4

$ cat ip.txt 
test1,test2,test3
test4,test5
test6,test7,test8,test9,test10
test11,test12,test13,test14
test15

$ perl -F, -ane 'print "$F[0]"; print ",".join(";",@F[1..$#F]) if($#F > 0)' ip.txt 
test1,test2;test3
test4,test5
test6,test7;test8;test9;test10
test11,test12;test13;test14
test15


다른 방법:

perl -F'/(,)/,$_,2' -ane '$F[2] =~ s/,/;/g; print @F'
  • /(,)/,$_,2$_사용된 방법에 따라 ,(입력 라인)을 두 부분으로 나누고 (,), 구분 기호를 캡처하고 아래 설명된 대로 세 가지 요소를 생성합니다.
  • $F[0]첫 번째 필드를 가져옵니다. 존재하는 경우 가져옵니다 $F[1].,
  • $F[2]나머지 필드 가져오기(있는 경우)


또 다른 방법이 있어요, 모방sed 's/,/;/2g'

perl -pe '$c=0; s/,/++$c<2 ? $& : ";"/ge' ip.txt
  • 각 행에 대한 카운터 초기화
  • 교체시 필요에 따라 카운터 값을 확인하십시오.
  • 수정자를 사용하면 ePerl 코드가 대체 섹션에 나타날 수 있습니다.

관련 정보