FILE1.TXT
$
file2.csv
[fields:WinSpc:defect]
a=b
hello=hi
[fields:ROCKET PROJECT:ticket]
description=Descrtiption
status=status
[fields:abl_tja1146:autoticket]
description=description
status=status
[fields:abl_tja1146:risk]
description=description
assignedToUsername=assigned_to
所需的输出如下:
output.txt或原始txt文件可以附加(file1.txt)
WinSpc,projects.winspc
ROCKET PROJECT,projects.rocket_project
TJA1146,projects.abl_tja1146
因为其中一个字符串(abl_tja1146)是完美的,不需要匹配它们,应该被忽略。
这是来自早期问题的extension,但要处理应忽略字段的情况。
答案 0 :(得分:1)
以下Awk
逻辑将为您完成工作。
awk 'FNR==NR{split($2,list,"."); replacement[$1]=list[2]; next} \
$0 ~ /^\[/{split($0,newlist,":"); if(newlist[2] !~ /^[[:lower:]]/) \
{gsub(newlist[2],replacement[newlist[2]],$0); print; \
while(getline && $0 != ""){print} print ""} }' FS="," file2.txt file1.txt
根据需要生成输出。
[fields:winspc:defect]
a=b
hello=hi
[fields:rocket_project:ticket]
description=Descrtiption
status=status
要替换的值的哈希映射和实际值是从file2
创建的,然后在file1
上,regex
匹配是在以{{1}开头的行上执行的并检查第二个字段是否为完美字符串(在您的示例中为小写),如果这样,后续行将被丢弃,否则它们将在显示时打印。