텍스트 파일이 3개 있어요emp id.txt(이전 sal.txt, 현재 sal.txt). 이 3개 파일의 내용:-
직원ID.txt
emp id ----- 1 4 7 10 13 16 19
sal.txt 이전
before sal ----- 23 56 78 97 105 123 145
살 지금
now sal ---- 25 60 82 99 109 124 150
쉘 스크립트에서 다음을 사용했습니다.
awk '{ for (i=1; i<=NF; i++) RtoC[i]= (RtoC[i]? RtoC[i] FS $i: $i) } END{ for (i in RtoC) print RtoC[i] }'
행에서 열로 변환하면 다음과 같은 출력이 나타납니다.
1 23 25
4 56 60
7 78 82
10 97 99
13 105 109
16 123 124
19 145 150
emp before now
id sal sal
--- ----- ----
하지만 다음과 같은 형식으로 출력하고 싶습니다.
--------------------------------
|emp id |before sal | now sal |
|--------|---------- | --------|
|1 | 23 | 25 |
|4 | 56 | 60 |
|7 | 78 | 82 |
|10 | 97 | 99 |
|13 | 105 | 109 |
|16 | 123 | 124 |
|19 | 145 | 150 |
--------------------------------
위 형식으로 출력을 얻을 수 있도록 이 문제를 해결하는 데 도움을 주시겠습니까?
답변1
step1:
for i in "emp_id.txt" "beforesal.txt" "nowsal.txt"; do perl -pne "s/ /\n/g" $i >> "$i"fi; done
step2:
paste emp_id.txtfi beforesal.txtfi nowsal.txtfi
산출
emp before now
id sal sal
----- ----- ----
1 23 25
4 56 60
7 78 82
10 97 99
13 105 109
16 123 124
19 145 150
답변2
파일을 열로 변환하는 작은 함수를 정의합니다.
f2c() { tr -s '[:blank:]' '\n' < "$1"; }
그런 paste
다음 ,프로세스 교체붙여 넣을 파일 인수로, column
좋은 출력을 제공합니다.
paste <(f2c 'emp id.txt') <(f2c 'before sal.txt') <(f2c 'now sal.txt') | column -t
emp before now
id sal sal
----- ----- ----
1 23 25
4 56 60
7 78 82
10 97 99
13 105 109
16 123 124
19 145 150
답변3
주어진awk
주문하다실제로 예상 출력과 꽤 비슷하지만 헤더가 공백으로 인해 별도의 줄로 분할되어 있습니다(입력 파일이 탭으로 구분되어 있거나 다른 것이면 문제가 되지 않음). 어쨌든 헤더가 어떻게 될지 이해가 안 됩니다. 인쇄의 마지막 줄은 버전 awk
에 따라 다를 수 있습니다 .종류옵션은 기본값입니다. 예를 들어 PROCINFO["sorted_in"]="@val_num_desc"
출력은 다음과 같습니다(그러나 예상 결과에서 숫자가 어떻게 오름차순으로 정렬되는지는 아직 확실하지 않습니다).
19 145 150
16 123 124
13 105 109
10 97 99
7 78 82
4 56 60
1 23 25
id sal sal
emp before now
----- ----- ----
아래의 수정된 명령을 사용하여 이것이 필요한지 또는 실제로 기대하는 것과 가까운지 확인해 보겠습니다.
awk '{ $2=$1"_"$2; $1="";
for (i=2; i<=NF; i++) RtoC[i]= (RtoC[i]? RtoC[i] "\t" $i: $i) }
END{ PROCINFO["sorted_in"]="@unsorted";
for (i in RtoC) print RtoC[i];
}' emp.txt before.txt new.txt |column -t
산출:
emp_id before_sal now_sal
----- ----- ----
1 23 25
4 56 60
7 78 82
10 97 99
13 105 109
16 123 124
19 145 150