【发布时间】:2019-07-26 20:09:46
【问题描述】:
我正在尝试使用 bash 脚本转换如下所示的 csv 文件。标头和结构始终相同。
源 csv 文件:
name,title,department,score
Jason,HR Manager,HR,10
Alice,IT Director,Technology and Ops,8
Jack,Network Team Lead,Technology and Ops,9
条件值(会根据要求而变化)
Real_name=name
Real_title=title
Real_department=department
Real_score=score
现在我试图在没有第一行的情况下获得以下结果,如果每个标题与这些条件值匹配,则值现在用空格分隔:
Real_name=Jason Real_title=HR Manager Real_department=HR Real_score=10
Real_name=Alice Real_title=IT Director Real_department=Technology and Ops Real_score=8
Real_name=Jack Real_title=Network Team Lead Real_department=Technology and Ops Real_score=9
我知道这可以用 awk 完成,但我的 awk 知识有限。我尝试了以下替换第一行但仍然不知道如何扩展它
awk "{$1="test "$1;print}' my_sample_file
更新:我似乎无法使用来自具有条件值的文件的输入。只是考虑一种更好且易于维护的方法,其中这些值不一定始终相同。可以是 MOD_title、MOD_name 等。而不是 Real_title、Real_name 等。
【问题讨论】:
-
条件检查应该在哪里?在 CSV 的某一列中?外部条件检查(一个愚蠢的例子,如果今天是星期一,那么列名必须是 MOD_...
-
我正在考虑使用带有条件值的 txt 文件。然后让 awk 直接读取它,然后打印出相同的输出。我认为这将需要几行代码,但仍然无法弄清楚。