【问题标题】:to remove only the last comma in a file using Unix使用 Unix 仅删除文件中的最后一个逗号
【发布时间】:2014-01-25 14:17:15
【问题描述】:

我的文件SQL_INPUT.csv 将具有如下值(值的数量不一定是 3,它甚至会达到 300,但格式将如下所示)我只需要删除最后一个逗号

'YC101692','YE100097','YU102391',

我已经尝试了以下

sed '$ s/,$//' SQL_INPUT.csv

没有给出任何结果(没有删除最后一个,)也试过了

SQL_INPUT.csv | tr -d ",$"

它删除了所有逗号

【问题讨论】:

  • 您能否将其输出粘贴到您的帖子中:head -n 1 SQL_INPUT.csv | hexdump -C
  • tr 根本不使用正则表达式,它只处理字符集

标签: unix csv sed comma tr


【解决方案1】:

您尝试使用 sed 似乎几乎是正确的。我想说以下应该可以解决问题:

sed s/,$// SQL_INPUT.csv

另外,如果您认为最后一个逗号后面可能有空格,您可以将上面的命令更改为:

sed 's/, *$//' SQL_INPUT.csv

【讨论】:

  • 我尝试了上述方法,但没有得到任何结果。我做错了什么 bash-3.2$ sed s/,$// SQL_INPUT.csv |回声 bash-3.2$
  • 如果文件有 DOS 行结尾,请使用 s/,[[:space:]]*$//
  • @user3116123 您的评论看起来像sed s/,$// SQL_INPUT.csv | echo,由于| echo,它将打印一个空行。所以放弃它,只做sed s/,$// SQL_INPUT.csv,它应该可以工作。
【解决方案2】:

这是awk

awk '{sub(/,$/,x)}1' SQL_INPUT.csv
'YC101692','YE100097','YU102391'

【讨论】:

  • 我收到以下错误 bash-3.2$ awk '{sub(/,$/,x)}1' SQL_INPUT.csv awk:第 1 行 awk 附近的语法错误:第 1 行 awk 附近的非法语句: 第 1 行附近的语法错误 awk: 在第 1 行附近退出
  • 我的系统上的awk 没有错误,也没有特殊的突击队使其不兼容。你在什么操作系统上。
【解决方案3】:

文件是在Windows中生成的,请尝试以下操作:

dos2unix SQL_INPUT.csv SQL_INPUT.csv
sed '$ s/,$//' SQL_INPUT.csv

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-17
    • 1970-01-01
    • 2012-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多