【发布时间】:2016-09-27 20:58:33
【问题描述】:
我有 sed 的问题,我需要用 csv 文件完成两件事
- 在每行不开始UNES的前面我需要添加标签“BF2;”
- 在文件的开头(如果存在 UNES)我需要添加一个标签“UNH;”
示例(无 UNES;)
50000024;IE15;041111;113901;verstuurd;Aangift;
50000024;IE15;041111;113901;verstuurd;Aangifte;
50000024;IE15;041111;113901;verstuurd;Aangifte;
示例(使用 UNES;)
UNES;
50000024;IE15;041111;113901;verstuurd;Aangift;
50000024;IE15;041111;113901;verstuurd;Aangifte;
50000024;IE15;041111;113901;verstuurd;Aangifte;
到目前为止我有这个:
sed -e 's/^\([^"UNES"]\)/BF2;\1/' | sed '/UNES/ a\UNH;'
这与 UNES 一样有效;标签存在 - 我似乎无法弄清楚如何插入 UNH;当 UNES 不存在时!
非常感谢任何帮助
样本输出:
UNES;
UNH;
BF2;50000024;IE15;041111;113901;verstuurd;Aangifte;
BF2;50000024;IE15;041111;113901;verstuurd;Aangifte;
BF2;50000024;IE15;041111;113901;verstuurd;Aangifte;
【问题讨论】:
-
中间出现的
NCTS-(TA)是什么? -
这只是绒毛 - 我将对其进行编辑,使其看起来像原始输入 - 我很抱歉像往常一样匆忙!
-
如果顶部没有UNES怎么办?
-
如果原始消息中不存在,则不应将其添加到输出中。到目前为止,第一个命令在不存在时有效,我不知道如何添加 UNH;部分
-
一位同事刚刚保释了我 - 这似乎是一种享受:
|sed -e '1s/^(UNES.*$)/\1\nUNH;/' -e ' 1,$s/^([^"UNES"])/BF2;\1/' -e '1s/^(BF2.*$)/UNH;\n\1/'
标签: sed