我有两份文件。
文件A:
Unix文件B:
A,B
C,D
E,f
.,.
.,.
N,N预期输出:
A,B,Unix
C,D,Unix
E,f,Unix
.,.,Unix
.,.,Unix
N,N,Unix如何在Linux shell脚本中实现?
发布于 2017-03-02 20:00:42
➜ cat a
A,B
C,D
E,f
.,.
.,.
N,N
➜ cat f2
Unix
➜ awk 'BEGIN{getline f2<"f2"}; {printf("%s,%s\n",$0,f2);}' a
A,B,Unix
C,D,Unix
E,f,Unix
.,.,Unix
.,.,Unix
N,N,Unix发布于 2017-03-02 20:16:24
假设fileA只包含一个单词,最好将其作为参数传递给awk。
awk -v v="Unix" 'BEGIN{FS=OFS=","}{$(NF+1)=v}1' fileB如果此fileA包含更多单词,并且假设每行只有1个单词,则还可以使用以下命令:
awk 'BEGIN{FS=OFS=","}NR==FNR{a[++i]=$1;next} {for(j=1; j<=i; j++) $(NF+1)=a[j]}1' fileA fileB发布于 2017-03-02 21:27:46
然后有一个很好的旧的paste作为一个选择:
$ cat file1
UNIX
$ cat file2
A,B
C,D
E,F
$ paste -d',' file2 <(yes `cat file1` | head -n $(cat file2 | wc -l))
A,B,UNIX
C,D,UNIX
E,F,UNIX这里的棘手之处在于,file1和file2中的行数不同,因此我们需要根据需要重复file1的UNIX行(即,与file2中的行数相同的次数)才能使用paste。
https://stackoverflow.com/questions/42554862
复制相似问题