我有2个.csv文件和1个txt文件。 fileA.csv具有如下信息:
Column1 Column2
Row1 Column1 Info Row1 Column2 Data 1 xyz
Row2 Column1 Info Row2 Column2 Data
Row3 Column1 Info Row3 Column2 More Data 2 XYZ ABC
编辑:这是一个csv,因此当在终端中显示时,列之间用逗号分隔。
fileB.txt只是具有此类信息的通用.txt文件
Row1 Column2 Info = XYZ
Row3 Column2 Info = ABC
我想做的是在fileB.txt的所有文件中搜索fileA.csv第2列的每一行。然后,如果找到匹配项,则将fileA.csv的Columns(1和2)分别输出到fileC.csv的第1列,或者如果语法上更简单,则分别输出第1列和第2列
使用上面的测试信息,期望输出到fileC.csv中
Column1
Row1 Column1 Info Row1 Column2 Info = XYZ
Row3 Column1 Info Row3 Column2 Info = ABC
或者在语法上更容易
Column1 Column2
Row1 Column1 Info Row1 Row1 Column2 Info = XYZ
Row3 Column1 Info Row3 Row3 Column2 Info = ABC
我尝试使用awk和grep,但对Bash脚本的熟悉程度不足,无法从fileA的特定列中搜索信息,为它搜索txt文件,然后将来自fileA的两列都输出到fileC.csv
顺便说一句,这不是家庭作业:)
答案 0 :(得分:1)
可以使用Maube,
awk '{print $4, $5, $6 > "test-fileA"}' fileA.csv;
grep -o -Ff test-fileA fileB.txt > test-fileB;
grep -n -Ff test-fileB test-fileA | cut -f1 | xargs echo > test-fileC;
awk 'NR==FNR { for (i=1; i<=NF; i++) a[$i] = $i; next } (FNR in a) {print $0 > "fileC.csv" }' test-fileC fileA.csv; rm test-file*