여러 열이 있는 파일(단 하나의 행)이 있습니다(예: 4(이 예에서는)).
A B C D
한 번에 가져온 2개의 열 값의 가능한 모든 조합을 출력으로 원합니다. 예를 들면 다음과 같습니다.
AB
AC
AD
BC
BD
CD
여기서 AB
와 는 BA
동일합니다. 코드를 시도했지만 sed 's! \([^ ]\+\)\( \|$\)!\1 !g' <file_name>
출력은 AB CD
.
awk
쉘 명령을 사용하여 이를 수행하는 방법을 제안하십시오 .
답변1
그리고 awk
:
awk '{for(i=1;i<=NF;i++){for(j=i+1;j<=NF;j++){print $i$j;}}}' file
다음은 두 개의 중첩 for
루프입니다.
for(i=1;i<=NF;i++)
모든 필드를 반복합니다.for(j=i+1;j<=NF;j++)
그런 다음 각 필드에 대해 나머지 모든 필드를 처음부터 반복합니다i+1
.print $i$j
두 개의 필드 값을 인쇄합니다.
산출:
AB
AC
AD
BC
BD
CD