여러 열을 파일에서 단일 문자열로 변환하는 방법

여러 열을 파일에서 단일 문자열로 변환하는 방법

이런 것을 편집하고 싶습니다.

ABC
abc
123

다음과 같이 됩니다.

Aa1Bb2Cc3

답변1

awk를 사용하십시오.

awk '
    { a[NR] = $0 }
    END {
        n = length(a[1])
        for (i=1; i<=n; i++) {
            for (j=1; j<=NR; j++) {
                printf "%s", substr(a[j],i,1)
            }
        }
        print ""
    }
' file
Aa1Bb2Cc3

답변2

awk예를 들어, 문자열 길이가 정확히 3자라고 가정하면 이렇게 할 수 있습니다. 예를 들어 다음과 같이 해보세요:

awk 'BEGIN {FS="" } {a=a$1;b=b$2;c=c$3} END {print a b c}'  input_file >output_file

선의 길이가 다르고 일정하다면 다음과 같이 사용할 수 있습니다.

awk -v N=3 'BEGIN {FS="" } { for(i=1;i<=N;i++) a[i]=a[i]$i} END { for(i=1;i<=N;i++) {printf "%s",a[i]};}'   input_file >output_file

3한 줄당 문자 수로 바꾸기

이것은 GNU에서는 잘 작동합니다 awk. 나머지 변형에 대해서는 잘 모르겠습니다.

답변3

사용행복하다(이전 Perl_6)

~$ raku -e 'my @a = lines.map: *.comb(); put join "", [Z] @a;'  file

#OR

~$ raku -e 'my @a = lines.map: *.comb(); put join ",", [Z] @a;'  file

첫 번째 코드 예제는 모든 문자를 함께 연결합니다. 두 번째 코드 예제는 쉼표로 연결됩니다. 곧 lines읽혀지고 각 줄이 comb단일 문자 요소로 편집될 것입니다. 이는 배열에 저장됩니다 @a. 파일을 출력하기 위해 put배열의 각 요소는 [Z]"zip" 결합/축소되어 모든 첫 번째 요소가 제거되고 결합되고 모든 두 번째 요소가 제거되고 결합됩니다.

입력 예:

ABC
abc
123

출력 예(첫 번째 코드 예):

Aa1Bb2Cc3

또는 호출을 제거하면 join ",",반환이 단일 공백으로 연결됩니다.

~$ raku -e 'my @a = lines.map: *.comb(); put [Z] @a;'  file
A a 1 B b 2 C c 3

https://docs.raku.org/언어/operators#Zip_metaoperator
https://raku.org

관련 정보