【发布时间】:2019-01-11 16:21:42
【问题描述】:
我想:
- 使用
awk或sed将列值替换为某些行值 - 如下所述,在循环中对多个 csv 文件执行此操作。
文件1.csv:
A,B,C,D
E,F,G,H
文件2.csv:
XYZ, 123
QWE, 456
想要更换:
- 文件 1 中的第 2 列,文件 2 中具有 [第 1 行第 1 列] 值
- 和文件 1 中的第 3 列,文件 2 中的 [第 1 行的第 2 列] 值
得到如下输出:
A,XYZ,123,D
E,XYZ,123,D
必须对多个文件执行此操作,第二个文件如下所示:
R,W,O,P
S,D,I,L
会改变如下...
R,QWE,456,P
S,QWE,456,L
让我知道如何使用awk 并循环执行此操作
-
我尝试如下,但它不起作用(
awk):awk 'FNR==NR{a[NR]=$1;next}{$2=a[FNR]}1' file2.csv file1.csv -
我还尝试在文件目录上循环运行此
awk:for file in transmaster*.csv do echo $file awk 'FNR==NR{a[NR]=$1;next}{$2=a[FNR]}1' file2.csv file1.csv done
...但出现以下错误:
awk: fatal: cannot open file `file' for reading (No such file or directory)
【问题讨论】:
-
总是在你的帖子发布一段时间后尝试选择一个答案,当有足够的答案作为正确答案时,也可以完全关闭线程。
-
通过查看您的个人资料,了解到有时您没有选择正确的答案,请在您提出问题后的某个时间给出,然后当您看到一些答案时,您可以投票对于所有有用的答案并选择一个答案作为正确答案以鼓励爱好者程序员在这里,请参阅此链接以获取更多信息stackoverflow.com/help/someone-answers欢呼。