簡體   English   中英

使用awk / sed將列值替換為多個文件的某些行值

[英]Replace column values with certain row values for multiple files using awk/sed

我想要:

  • 使用awksed將列值替換為某些行值
  • 如下所述,對循環中的多個csv文件執行此操作。

File1.csv:

A,B,C,D
E,F,G,H

File2.csv:

XYZ, 123
QWE, 456

要替換:

  • 文件1中的第二列具有文件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和循環執行此操作

  1. 我嘗試如下,但它不起作用(在awk ):

     awk 'FNR==NR{a[NR]=$1;next}{$2=a[FNR]}1' file2.csv file1.csv 
  2. 我也嘗試在文件目錄中循環運行這個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)

您能否嘗試以下操作:

awk '
FNR==NR{
  a[FNR,1]=$1
  a[FNR,2]=$2
  next
}
{
  $2=a[FNR,1]
  $3=a[FNR,2]
}
1' FS=", " file2.csv  FS="," OFS="," file1.csv

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM