여러 열을 결합하고 그 사이에 정보를 삽입합니다.

여러 열을 결합하고 그 사이에 정보를 삽입합니다.

3개의 파일이 있는데 모두 정보 열을 포함하고 있습니다.

ID.파일

1
2
3

이름.파일

Josh
Kate
Chris

성.파일

Smith
Jones
Black

나는 다음과 같은 것을 얻을 수 있도록 그것들을 어떻게든 결합하고 싶습니다:

The ID of the Josh Smith is 1
The ID of the Kate Jones is 2
The ID of the Chris Black is 3

지금까지 붙여넣기를 사용하여 결합해 보았지만 paste -d ',' id.file name.file lastname.file훌륭하게 작동하지만 시작과 값 사이에 단어를 추가하고 싶습니다.

답변1

일방 통행:

paste name.file lastname.file id.file | awk -F '\t' '{printf "The ID of the %s %s is %d\n", $1,$2,$3}'

awk필요한 형식을 얻는 데 사용됩니다 .

답변2

또 다른 가능한 해결책은 다음과 같습니다(각 파일에 항상 단일 열이 있다고 가정).

paste name.file lastname.file id.file |xargs printf 'the id of the %s %s is %d\n'

또는 awk열 제한 없이만:

awk '{ getline name<"name.file"; getline lastname<"lastname.file"}
     { print "the Id of the", name, lastname, "is", $0 }' OFS=' ' id.file

답변3

아이콘 라이브러리의 프로그램 사용(SNOBOL 의미의 기호 조작 언어):

# Utility functions: print-as-echo, print-line-with-visual-space.
pe() { for _i;do printf "%s" "$_i";done; printf "\n"; }
pl() { pe;pe "-----" ;pe "$*"; }

pl " Input data files" data?
head data?

pl " Expected output:"
head -v $E

# Insert strings like:
# The ID of the Josh Smith is 1
pl " Results:"
icon-paste "-The ID of the " data2 "- " data3 "- is " data1 |
tee f1

pl " Verify results if possible:"
C=$HOME/bin/pass-fail
[ -f $C ] && $C f1 "$E" || ( pe; pe " Results cannot be verified." ) >&2

생산:

-----
 Input data files data1 data2 data3
==> data1 <==
1
2
3

==> data2 <==
Josh
Kate
Chris

==> data3 <==
Smith
Jones
Black

-----
 Expected output:
==> expected-output <==
The ID of the Josh Smith is 1
The ID of the Kate Jones is 2
The ID of the Chris Black is 3

-----
 Results:
The ID of the Josh Smith is 1
The ID of the Kate Jones is 2
The ID of the Chris Black is 3

-----
 Verify results if possible:

-----
 Comparison of 3 created lines with 3 lines of desired results:
 Succeeded -- files (computed) f1 and (standard) expected-output have same content.

이것은 다음과 같은 시스템에 있습니다.

OS, ker|rel, machine: Linux, 3.16.0-7-amd64, x86_64
Distribution        : Debian 8.11 (jessie) 

아이콘 붙여넣기에 대한 세부 정보(lam.icn):

icon-paste      paste, join, laminate lines from files. (man)
Path    : ~/executable/icon-paste
Version : - ( local: ~/executable/icon-paste, 2012-02-11 )
Length  : 24 lines
Type    : POSIX shell script executable (binary data)
Shebang : #!/bin/sh
Home    : https://www2.cs.arizona.edu/icon/library/src/progs/lam.icn (doc)

아이콘에 대한 정보는 다음에서 확인할 수 있습니다.

https://www2.cs.arizona.edu/icon/

행운을 빕니다... 건배, drl

관련 정보