gpt4 book ai didi

linux - 如何合并文件并搜索结果?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:27:50 26 4
gpt4 key购买 nike

我有两个示例文件如下:

文件1

item name="NY" block="A" idnum="12345"
item name="NJ" block="B" idnum="123456"
item name="CT" block="C" idnum="1234567"

文件2

ID_B|ID_C|NY|4|8198|10|2374|127
ID_C|ID_D|NJ|4|8198|10|2374|127
ID_D|ID_E|CT|4|8198|10|2374|127

我希望能够生成一个文件,将 ID 作为参数传递,输出应该如下所示

如果我正在寻找 ID_B 的信息,那么输出应该是

ID_B|ID_C|NY|4|8198|10|2374|127 => "NY" block="A" idnum="12345"

如果我同时寻找两个 ID_CID_D 它应该是

ID_C|ID_D|NJ|4|8198|10|2374|127 => "NJ" block="B" idnum="123456"
ID_D|ID_E|CT|4|8198|10|2374|127 => "CT" block="C" idnum="1234567"

最佳答案

使用 bash、join、sort 和 awk。

脚本.sh:

#!/bin/bash

file1="File1"
file2="File2"

grep -f <(printf "^%s|\n" "$@") <(join -t '|' -1 1 -2 3 <(awk -F'"' '{OFS="|"; print $2,$4,$6}' "$file1" | sort -t '|' -k 1,1) <(sort -t '|' -k 3,3 "$file2") -o 2.1,2.2,2.3,2.4,2.5,2.6,2.7,2.8,2.3,1.2,1.3 | awk -F'|' '{ printf "%s|%s|%s|%s|%s|%s|%s|%s => \"%s\" block=\"%s\" idnum=\"%s\"\n",$1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11 }')

示例:script.sh ID_C ID_D

输出:

ID_D|ID_E|CT|4|8198|10|2374|127 => "CT" block="C" idnum="1234567"ID_C|ID_D|NJ|4|8198|10|2374|127 => "NJ" block="B" idnum="123456"

关于linux - 如何合并文件并搜索结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32403374/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com