我正在创建一个shell脚本来分析输入文件并将结果发送到输出文件 . 以下是输入文件中的示例:
01,Rome,30,New York,70,
02,Los Angeles,5,New York,50,
03,New York,40,Tokyo,20,
04,Paris,5,New York,40,
05,New York,20,London,30,
06,Seattle,20,New York,40,
07,Chicago,10,New York,30,
08,New York,20,Miami,40,
这是我在输出文件中需要的结果:
01,Rome,30,New York,70,4th,40,
02,Los Angeles,5,New York,50,4th,45,
03,New York,40,Tokyo,20,2nd,20,
04,Paris,5,New York,40,4th,35,
05,New York,20,London,30,2nd,-10,
06,Seattle,20,New York,40,4th,20,
07,Chicago,10,New York,30,4th,20,
08,New York,20,Miami,40,2nd,-20,
字段以逗号分隔 .
我打算在每行的第二个字段中搜索字符串“New York”,如果为true,则添加带有“2nd”的第6个字段,如果不是true,则添加值为“4th”的第6个字段
然后我打算使用第3和第5个字段中的值进行减法 . 如果第6个字段中的字符串是“4th”,则从第5个字段中减去第3个字段 . 如果第6个字段中的字符串是“2nd”,则从第3个字段中减去第5个字段 . 计算结果需要是每行中的第7个字段 .
我已经尝试过awk,sed,grep,echo和bc的组合,但我觉得我是在过度思考 . 有什么建议?
编辑:到目前为止我的进展 - 我认为单独评估和追加每一行都是低效的 .
while read line; do
echo "$(cut -f2 -d ",")"
done < input.txt
打印每行的第二个字段,但我很难评估字符串并在循环中追加这些行 . 对于减法部分,我的计划是将回声和管道值用于bc,但我现在仍处于第一步 .