Bash:如果不存在,如何在行尾添加字符?

标签 bash awk sed

假设我在 csv 文件中有以下文本:

454,'steve',3434
123,'john',3454,
2343,'mike',5757

我想做的是在每一行的末尾插入一个新列。但是,如上例所示,并非所有行的末尾都有逗号。

最终结果应该是

454,'steve',3434,'2018-10-12'
123,'john',3454,'2018-10-12'
2343,'mike',5757,'2018-10-12'

如何使用 bash 实现这一目标?

最佳答案

awk 会处理它。

$ awk -F, -v OFS=, -v d="'2018-10-12'" '{$4=d}1' file

454,'steve',3434,'2018-10-12'
123,'john',3454,'2018-10-12'
2343,'mike',5757,'2018-10-12'

因为我们知道日期是非空的,你可以将它打到

$ awk -F, -v OFS=, -v d="'2018-10-12'" '$4=d' file

关于Bash:如果不存在,如何在行尾添加字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54583137/

相关文章:

linux -/dev/stdin 有输入吗?

点开头目录的 Bash 模式,不包括 .和

linux - 如何使用 sed、awk 只打印特定单词的路径?

sed - 使用 sed/awk 搜索字符串并在其旁边打印?

regex - 在字符模式之间匹配 N 行,移动 N 行以与字符模式内联

awk 以交错方式将列拆分为多列

linux - RRD工具图: empty graph

bash - 试图理解 sed 脚本中的嵌套括号

bash - 如何递增字符串中的最后一个数字;狂欢

awk - 根据另一个文件中的模式删除行