bash - vim:如果为空,则将第二列空白替换为同一列中的值

标签 bash unix vim awk sed

我有一个如下所示的数据集:

TEST,SOMELOG
TESA,SOMELOGA
TESB
TESC
TESD,SOMELOGB
TESE
TESF
TESG,SOMELOGC

需要使它看起来像这样:

TEST,SOMELOG
TESA,SOMELOGA
TESB,SOMELOGB
TESC,SOMELOGB
TESD,SOMELOGB
TESE,SOMELOGC
TESF,SOMELOGC
TESG,SOMELOGC

如果第二列为空,,SOMELOGB,SOMELOGC 将替换每个 /r 回车符。仅当第二列为空时才会进行替换,并且应替换到非空行。会考虑 bash/sed/awk 或 vim 解决方案。

最佳答案

awk 来救援!

如果您有tac,这可能是最简单的

$ tac file | awk -F, -v OFS=, 'NF==1{$2=p} NF>1{p=$2}1' | tac

关于bash - vim:如果为空,则将第二列空白替换为同一列中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41168299/

相关文章:

unix - 使用 mailx 的高优先级邮件

bash - 基于公共(public)字段(IP 地址)连接两个文本文件

vim - 修改 vim-fugitive Gstatus 映射

linux - 尝试在 bash linux 中使用 "new line"命令复制语法

linux - 如何使用命令 "find"在目录中查找包含特定字符串的文件?

bash - 使用 shell 脚本读取 RSS 提要

vim - 如何源文件相对于文件?

Vim:在命令行模式下多次执行同一命令的方法

linux - bash 脚本从上次失败的地方执行

linux - 使用 SED/Perl 删除包含数字的字符串部分