파일의 한 줄을 두 개의 열로 분할

파일의 한 줄을 두 개의 열로 분할

행을 두 개의 열로 나누고 싶습니다

./ABC/dce/app/config/fgh/pqr/app.properties:app.pass=*****

위 줄의 콜론(:)이 구분 기호 역할을 하고 아래와 같이 출력되기를 원합니다.

./ABC/dce/app/config/fgh/pqr/app.properties                        app.pass

누구든지 나를 도와줄 수 있나요?

답변1

당신은 그것을 사용할 수 있습니다awk

awk -F"[:=]" '{print $1"\t"$2}' $file

2개의 구분 기호를 설정하여 FS그 이후의 모든 항목을 =열로 만들고 제외할 수 있습니다.

당신은 또한 사용할 수 있습니다sed

sed -E 's/(^.*):(.*)=.*/\1\t\2/'

산출*

./ABC/dce/app/config/fgh/pqr/app.properties     app.pass

답변2

당신은 시도 할 수 있습니다:

echo "./ABC/dce/app/config/fgh/pqr/app.properties:app.pass=*****" | tr ':' '\t'

답변3

또한 awk다음 가능성을 사용하십시오.

echo './ABC/dce/app/config/fgh/pqr/app.properties:app.pass=*****' | awk 'sub(/=[^=]*$/,""){sub(/:/,"\t")} 1'
./ABC/dce/app/config/fgh/pqr/app.properties     app.pass
  • sub()교체가 성공하면 1을 반환하고, 그렇지 않으면 0을 반환합니다.
  • 조건: 첫 번째 sub()기능. 대안이 있나요? 그렇다면 두 번째 sub()기능을 수행하십시오.
  • 첫 번째 sub(): sub(/=[^=]*$/,"")삭제부터 =끝까지.
  • 두 번째 sub(): 탭 sub(/:/,"\t")교체:\t

답변4

사용행복하다(이전 Perl_6)

콜론을 하나만 분할하려는 경우 ::

raku -ne '.split(":").join("\t").put;'

그러나 두 번째 요소(색인=1)를 정리하려면 다음을 수행하십시오.

raku -ne '.=split(":"); put( .[0] ~ "\t" ~ .[1].subst(/ \=.* /));'  

입력 예:

./ABC/dce/app/config/fgh/pqr/app.properties:app.pass=*****

출력 예(1):

./ABC/dce/app/config/fgh/pqr/app.properties    app.pass=*****

출력 예(2):

./ABC/dce/app/config/fgh/pqr/app.properties    app.pass

간단히 말해서, 이 split절차는 :결장을 파괴적으로 분할하여 제거하는 것입니다. 첫 번째 예에서는 결과 문자열이 탭 문자를 사용하여 다시 결합됩니다 \t. 두 번째 예에서는 결과 문자열이 실제로 $_할당 연산자를 사용하여 주제 변수에 다시 저장 되므로 .=두 번째 작업( .=예, 단축형 $_.=)을 수행할 수 있습니다. 두 번째 작업은 정규식을 아무것도 subst바꾸지 않습니다(즉, 삭제합니다).\=.*

Raku의 문자열 연결은 ~물결표 문자를 통해 수행됩니다. 위의 코드는 요청된 작업을 수행합니다. 그러나 열 사이의 간격을 변경하려면 유사한 문자열 연결을 사용해 볼 수 있습니다 ~ "\t" xx 4 ~(예: \t탭 문자가 4번 반복됨).

https://raku.org

관련 정보