我有一个 csv,其尾部缺少列数据,例如以下内容:
Data1,Data2,User
abc,def,foo
hij,klm,foo
nop,qrs
tuv,wxy
在这种情况下,我想添加bar
到没有foo
. 这可以通过 轻松实现sed '/foo/!s/$/,bar/'
。问题是这也会,bar
在第一行添加一个。我知道我可以用 a 跳过第一行2,$
,但是当我这样做时,它似乎不尊重“行号”和“否定搜索”指令。sed 内部有没有办法将两者结合起来?
(要明确的是,我知道我还有其他选择。我可能可以执行多个 sed 操作,或者我可以在 vim 中编写一个简单的宏并在一秒钟内完成。但在这种情况下,我想看看是否可以完成完全在一个 sed 中。)
这可能对你有用(GNU sed):
如果不是第一行并且该行不包含
foo
append,bar
。选择:
这是一个
sed
适用于任何版本的命令sed
:如果你想给
awk
一个机会,那么使用任何版本的 awk 都会容易得多: