비슷한 데이터(input1, input2 등)가 있는 n개의 파일이 있고 이 파일의 두 번째 열(호출)을 포함하는 새 파일을 만들고 싶습니다. 내가 사용한다면
awk '{print $2}' input{1..n} >> out
그런 다음 입력 파일의 두 번째 열에 있는 모든 항목이 포함된 열을 얻습니다. $1
in out = input1, in out = input2, out = input3, ...., out = inputn과 같이 다양한 파일에 대해 서로 다른 열을 설정하려면 어떻게 해야 합니까 ?$2
$2
$2
$3
$2
$n
$2
답변1
BEGIN
다음 명령문을 사용하여 명령문에서 모든 작업을 수행할 수 있습니다.getline
awk '
BEGIN {
while(1) {
line = sep = ""
for (i = 1; i < ARGC; i++) {
if ((getline < ARGV[i]) <= 0) exit
line = line sep $2
sep = OFS
}
print line
}
}' input{1..n} > out
답변2
paste
두 번째 열을 모두 합치는 명령을 작성할 수 있습니다 .
cmd="paste"
for x in input{1..n}; do
cmd="$cmd <(awk '{print \$2;}' $x)"
done
echo $cmd
eval $cmd
답변3
pr
저는 데이터를 열화하도록 설계된 이 도구를 사용하겠습니다 .
awk '{print $2}' input{1..n} | pr -t --columns=n > out
이는 각 파일의 행 수가 동일하다고 가정합니다.
답변4
이것을 사용우편 엽서 참조
awk '{a[FNR] = a[FNR]" " $2}END{for(i=1;i<=FNR;i++) print a[i]}' input{1..n}
배열은 서로 다른 파일의 각 줄을 보유합니다.
FNR 현재 입력 파일에서 읽은 레코드 수. 각 파일 시작 부분에서 0으로 설정됩니다.
END{for(i=1;i<FNR;i++) print a[i]}
파일 끝에 배열 a의 내용을 인쇄합니다.