gpt4 book ai didi

bash - 使用 shell 脚本从文件中提取一行

转载 作者:行者123 更新时间:2023-11-29 09:27:56 27 4
gpt4 key购买 nike

我有一个 CSV 文件,包含如下列,

User     Name   Env   Role
user1 pap dev dev
user2 nic uat test

我需要针对“Env”列或“User”列提取一行。我写的脚本 'extract.sh' 是,

k=$2
field=$3
head -1 $1; cat $1 | awk -F "," -v k=`echo $k` -v field=`echo $field` '{ k=k;j=$field; if ( j==k ) print $0}'

脚本是用这样的 3 个参数调用的,sh extract.sh username.csv dev 3 第一个参数是 csv 文件,第二个是值,第三个是列号,我得到的输出是

User Name Env Role
user1 pap dev dev

但是我需要这样的输出,

User = user1 
Name = pap
Env = dev
Role = dev

谁能帮我搞定这个?

最佳答案

你可以使用这个 awk:

awk -F, -v RS='\r\n' -v col=$3 -v val="$2" 'NR==1 {for (i=1; i<=NF; i++) hdr[i]=$i;next}
$col == val {for (i=1; i<=NF; i++) print hdr[i], "=", $i; exit}' "$1"
User = user1
Name = pap
Env = dev
Role = dev

解释:

NR == 1      # For first row save headers in an array called hdr
$col == val # when passed val is same as the value of column indicated by col

关于bash - 使用 shell 脚本从文件中提取一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30098989/

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