처음 세 개의 공통 열을 기준으로 레코드를 병합하고 마지막 열에 쉼표로 구분하여 일반적이지 않은 값을 입력합니다. [중복]

처음 세 개의 공통 열을 기준으로 레코드를 병합하고 마지막 열에 쉼표로 구분하여 일반적이지 않은 값을 입력합니다. [중복]

처음 세 개의 공통 열을 기준으로 레코드를 병합하고 마지막 열에 쉼표로 구분된 일반적이지 않은 값을 배치합니다. 나는 다음을 수행해야한다는 요구 사항이 있습니다 -

입력 파일:

HWF CommonDomain  javatools       AdminServer
ABC CommonDomain  resourcebundle  AdminServer
HWF CommonDomain  stringeditor    AdminServer
ABC CommonDomain  resourcebundle  HelpPortalServer_1
HWF CommonDomain  stringeditor    HelpPortalServer_1 
HWF CommonDomain  javatools       HelpPortalServer_1

예상 출력:

ABC CommonDomain resourcebundle   AdminServer,HelpPortalServer_1
HWF CommonDomain javatools       AdminServer, HelpPortalServer_1 
HWF CommonDomain stringeditor   AdminServer,HelpPortalServer_1 

답변1

더 높은 수준의 스크립트 언어를 사용하지 않으면 이 작업을 쉽게 수행할 수 없습니다. 이 작업을 수행한다면 PHP를 사용하여 다음과 같은 작업을 수행할 것입니다.

<?php
$infile = fopen("/path/to/input/file.txt", "r");
$outfile = fopen("/path/to/output/file.txt", "w");

$data = array();

while (($buffer = fgets($infile, 4096)) !== false) {
    $parts = explode(' ', $buffer);
    for($i=1; $i<count($parts); $i++) {
        $data[$parts[0]][$parts[$i]=1;
    }
}


foreach($data as $key=>$values) {
    $buffer = "";
    $buffer .= $key.' ';
    foreach(array_keys($values) as $v) {
        buffer .= $v.' ';
    }
    $buffer .= "\n";
    fwrite($outfile, $buffer);
}
fclose($infile);
fclose($outfile);
?>

관련 정보