首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在脚本中递归地应用粘贴命令

如何在脚本中递归地应用粘贴命令
EN

Stack Overflow用户
提问于 2017-02-14 14:49:26
回答 1查看 490关注 0票数 1

我有个剧本:

代码语言:javascript
复制
paste -d, <(cut fileA1 -d, -f1-6) <(cut fileB1 -d, -f7) > fileC1

它接受两个csv文本文件fileA1fileB1,复制fileA1的前六列并将它们粘贴到fileB1的前6列中(并进行替换)。然后将输出保存到一个新文件fileC1中。

现在,我想将其扩展到folder A (fileA1...fileAn)和folder B (fileB1...fileBn)中的n个文件,并将输出保存到folder C (fileC1...fileCn)中。所有输入文件的行数相等。

我想出了这个

代码语言:javascript
复制
fileA1=find /path/to/folderA -name '.csv'
fileB1=find /path/to/folderB -name '.csv' 

paste -d, <(cut fileA1 -d, -f1-6) <(cut fileB1 -d, -f7) > *.csv 

但这不管用。有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-14 15:58:21

你需要一个明确的循环。看起来您并没有使用任何不能在shell中完成的find特性,所以我将跳过它。

代码语言:javascript
复制
a_files=( /path/to/folderA/*.csv )
b_files=( /path/to/folderB/*.csv )

接下来,我将假设您的文件名是这样的:两个数组是同步的;每个数组的第一个元素一起运行,以此类推。

代码语言:javascript
复制
for ((i=0; i<"${#a_files[@]}"; i++)); do
    paste -d, <(cut "${a_files[i]}" -d, -f1-6) \
              <(cut "${b_files[i]}" -d, -f7-) > fileC"$i".csv
done

在这里,我假设输出文件的名称可以这样构造。(这也意味着您可能能够对输入文件执行相同的操作;这里唯一的变量是i迭代的范围0-n。)

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

https://stackoverflow.com/questions/42229150

复制
相关文章

相似问题

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