【问题标题】:How to replace comma with character in Unix bash [duplicate]如何在Unix bash中用字符替换逗号[重复]
【发布时间】:2018-08-31 12:55:57
【问题描述】:

我有以下字符串:

"BBBB,AAAA"comma 分隔。我需要在字符串的每个值后面附加.done

当我在下面尝试时。这是行不通的。我尝试用.done 替换,,但它不起作用。我还需要.doneAAAABBBB 的末尾

-bash-3.2$ echo "AAAA,BBBB" |tr "," ".done" 
 AAAA.BBBB

预期输出:

AAAA.done  BBBB.done

感谢您的帮助。

编辑:

在@Ravindra 建议之后,我对其进行了一些修改,它工作正常,但现在的问题是修剪空格。

-bash-3.2$ echo "AAAA,BBBB ,CCC, DDD" | sed 's/,/.done /g;s/$/.done/'
 AAAA.done BBBB .done  CCC.done  DDD.done
               ^  
               getting space here

操作系统名称:SunOS

【问题讨论】:

  • 下次最好声明“不起作用”意味着只有逗号被“.done”中的第一个字符(即点)替换。

标签: bash shell unix aix sunos


【解决方案1】:

遵循简单的sed 可能会对您有所帮助。

val="AAAA,BBBB"
echo "$val" | sed 's/,/.done /;s/$/.done/'

输出如下。

AAAA.done BBBB.done

编辑:

awk -v val="$val" 'BEGIN{gsub(/,| ,/,".done ",val);sub(/$/,".done",val);print val}'

EDIT2:

awk -v val="$val" 'BEGIN{gsub(/,| ,/,".done ",val);sub(/$/,".done",val);print val}'
AAA.done  BBB.done  CCC.done DDD.done

【讨论】:

  • Sorry it doesn't work incase val='AAA,BBB,CCC"。我的意思是当参数数量增加时。它不起作用。请您建议
  • @XING,现在检查我的编辑解决方案,然后让我知道。它也应该处理多个,,让我知道这是否适合你?
  • 还有一件事..如果字符串类似于"AAA, BBB , CCC ,DDD",在这种情况下结果是AAA.done BBB .done CCC .done。我的意思是BBB .done 之间的空格也应该删除
  • @XING,我现在已经编辑了我的解决方案,然后检查并告诉我?
  • 出现语法错误awk: syntax error near line 1 awk: bailing out near line 1。你能检查一下吗
猜你喜欢
  • 2013-06-08
  • 2013-06-23
  • 2012-05-23
  • 1970-01-01
  • 2018-08-06
  • 2022-12-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多