首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从文件中获取一行并将其作为列添加到另一个文件中

问从文件中获取一行并将其作为列添加到另一个文件中
EN

Stack Overflow用户
提问于 2017-03-02 19:56:20
回答 3查看 33关注 0票数 0

我有两份文件。

文件A:

代码语言:javascript
复制
Unix

文件B:

代码语言:javascript
复制
A,B 
C,D
E,f
.,.
.,.
N,N

预期输出:

代码语言:javascript
复制
A,B,Unix  
C,D,Unix
E,f,Unix
.,.,Unix
.,.,Unix
N,N,Unix

如何在Linux shell脚本中实现?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-03-02 20:00:42

代码语言:javascript
复制
➜ 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
票数 1
EN

Stack Overflow用户

发布于 2017-03-02 20:16:24

假设fileA只包含一个单词,最好将其作为参数传递给awk。

代码语言:javascript
复制
awk -v v="Unix" 'BEGIN{FS=OFS=","}{$(NF+1)=v}1' fileB

如果此fileA包含更多单词,并且假设每行只有1个单词,则还可以使用以下命令:

代码语言:javascript
复制
awk 'BEGIN{FS=OFS=","}NR==FNR{a[++i]=$1;next} {for(j=1; j<=i; j++) $(NF+1)=a[j]}1' fileA fileB
票数 0
EN

Stack Overflow用户

发布于 2017-03-02 21:27:46

然后有一个很好的旧的paste作为一个选择:

代码语言:javascript
复制
$  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。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42554862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档