【问题标题】:sed + string appended on the last line instead on new linesed + 字符串附加在最后一行而不是新行
【发布时间】:2021-04-18 13:30:56
【问题描述】:

我们有以下 csv 文件

more file.csv

ams-site       ,host.aggregator.ttl                ,86400
capacity-scheduler,maximum-am-resource,0.6
yarn-site,yarn.log-aggregation.retain-seconds,800

我们需要从 csv 文件中删除空行,同时删除 scv 文件中的空格

所以我们做了以下

sed -i '/^\s*$/d' file.csv
sed -i -E 's/(^|,)[[:blank:]]+/\1/g; s/[[:blank:]]+(,|$)/\1/g'  file.csv

以上sed设置后

我们将新行添加为

echo zoo.cfg,timeout,100>> file.cs

但我们现在看到file.csv 看起来像这样

ams-site       ,host.aggregator.ttl                ,86400
capacity-scheduler,maximum-am-resource,0.6
yarn-site,yarn.log-aggregation.retain-seconds,800zoo.cfg,timeout,100

所以我怀疑我的 sed 语法为 sed -i -E 's/(^|,)[[:blank:]]+/\1/g; s/[[:blank:]]+(,|$)/\1/g'

这个错误看起来像是最后一行之后的回车而不是换行

知道我的 sed 语法有什么问题吗?

【问题讨论】:

标签: csv sed


【解决方案1】:
sed -E '/^$/d;s/[[:space:]]+//g' file.cs

使用 -E 和 -R 启用正则表达式解释,首先删除所有空白行,然后将一个或多个空格替换为空

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-13
    • 1970-01-01
    • 1970-01-01
    • 2018-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-02
    相关资源
    最近更新 更多