linux - 如何将 "title"添加到 Awk 中的名称字段

标签 linux bash awk

我在打印/邮寄行业工作,经常发现有必要将标题或称呼合并到邮寄列表的名称字段中。给定以下文件格式:

**SEQ_NO**    | **NAME**  | **COMPANY**        | **so on**  
:------------ | :-------- | :----------------- | :---------------  
1             | name1     | company1           | blahblah        |  
2             | name2     | company2           | blaseblah       |  

我打算做的是在每个名称的末尾添加“, DC”,结果是 name1, DC name2, DC

在 Awk 中使用以下内容(竖线分隔的文件输入和输出),在本网站上的另一个问题的帮助下,我已经尽可能接近:

awk -F'|' -vOFS='|' '{$2 = $2 ", DC" }1' [input file] > [output file]

但是,这会将附加文本添加到标题行中,我希望避免这种情况。当然,在一行上手动编辑不会花很长时间,但理想情况下,我想将上面的脚本合并到现有的 Perl 脚本中,并且想知道一种方法来实现我上面所做的结果,除了不必删除 ",第 2 列标题中的 DC"。

附言很抱歉格式问题,新来张贴在这里。

最佳答案

在您的代码中添加一个 NR > 2 条件。这意味着它只会对第 2 行及以上行生效。

$ gawk -F'|' -vOFS='|' 'NR > 2 {$2 = $2", DC" }1' data.txt
SEQ_NO | NAME | COMPANY | so on
:------------ | :-------- | :----------------- | :---------------
1 | name1 , DC| company1 | blahblah |
2 | name2 , DC| company2 | blaseblah |

关于linux - 如何将 "title"添加到 Awk 中的名称字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43266028/

相关文章:

使用 djvused 程序的 linux shell 脚本不工作

linux - LD_PRELOAD - shell 扩展问题

linux - 如何在 SED 或 AWK 中使用 if, else?

mysql - 需要根据对应的值制定UPDATE语句

c - 为什么使用 calloc 将分配的内存初始化为零?

linux - 如何延迟运行程序直到磁盘事件消退

c++ - Linux串口RAW模式

linux - 如何在 Shell 脚本中检查 Linux 文件系统是否挂起

linux - 按行拆分文件

bash - 如何在 bash 中对数组进行排序并获取唯一值?