원본 파일별로 심볼릭 링크를 반복적으로 그룹화

원본 파일별로 심볼릭 링크를 반복적으로 그룹화

다음과 같이 구성된 텍스트 파일에 목록이 있습니다.

symlink("toolbox", "/system/bin/schedtop");
symlink("toolbox", "/system/bin/sendevent");
symlink("toolbox", "/system/bin/setconsole");
symlink("toolbox", "/system/bin/setenforce");
symlink("toolbox", "/system/bin/setprop");
symlink("toolbox", "/system/bin/setsebool");
symlink("mksh", "/system/bin/sh");

내가 하고 싶은 것은 Bash 스크립트를 사용하여 다음과 같이 변경하는 것입니다.

symlink("toolbox", "/system/bin/schedtop", "/system/bin/sendevent", "/system/bin/setconsole", "/system/bin/setenforce", "/system/bin/setprop", "/system/bin/setsebool")
symlink("mksh", "/system/bin/sh");

이는 원본 파일(이 경우 toolbox.

현재는 파일을 이름별로 정렬하고 있지만 확실히 만족스럽지 않습니다! 누구든지 올바른 방향으로 나를 가리킬 수 있습니까?

답변1

awk다음과 같은 그룹화된 작업에 이상적입니다.

$ awk -F'"' ' { a[$2]=a[$2] ", \""$4"\"" } 
        END { for(i in a) printf("symlink(\"%s\"%s);\n", i, a[i]); }' input

귀하의 예 출력 :

symlink("toolbox", "/system/bin/schedtop", "/system/bin/sendevent",
                   "/system/bin/setconsole", "/system/bin/setenforce", 
                   "/system/bin/setprop", "/system/bin/setsebool");
symlink("mksh", "/system/bin/sh");

(더 나은 레이아웃을 위해 줄바꿈이 추가되었습니다.)

여기서는 큰따옴표 문자가 필드 구분 기호로 해석됨을 -F'"'나타냅니다 . etc 는 두 번째 etc 필드를 참조하며 각 행에 대해 항목이 연관 배열에 추가/수정됩니다 . 이 작업은 연관 배열의 각 키를 반복하고 그룹을 예쁘게 인쇄합니다.awk$2aEND

관련 정보