gpt4 book ai didi

regex - 如何在shell中的2个字符之间添加逗号

转载 作者:行者123 更新时间:2023-12-02 19:25:24 27 4
gpt4 key购买 nike

我输入一个包含 1 个大写字母的字符串或一个包含 2 个大写字母的字符串下面是输入字符串的示例:

AB
AN
FG
K
M

我想执行一个 shell 命令/函数,将输入字符串转换为 2 个小写字母,并用逗号“,”分隔(如果输入是 2 个大写字母)或 1 个小写字母(如果输入是 1)大写字母)

上述示例的输出

a,b
a,n
f,g
k
m

我试过这个

(echo -n "${s:0:1}" && [ "${s,1:1}" != "" ] && echo -n ",${s:1:1}") | tr [A-Z] [a-z]

但我认为 sed/awk 有最简单的解决方案

最佳答案

您可以使用这个 awk:

awk 'BEGIN{FS=""; OFS=","} {$0 = tolower($0); $1=$1} 1' file

a,b
a,n
f,g
k
m

详细信息:

  • FS="":使用空字段分隔符将每个字符拆分为单独的字段
  • OFS=",":使用输出字段分隔符作为 ,
  • $0 = tolower($0):小写所有大写字符
  • $1=$1:强制 awk 使用 OFS 值重写每条记录
  • 1:打印每条记录

替代解决方案:

如果您的 awk 不支持 FS=""(空字段分隔符),请使用以下解决方案:

awk -v OFS=, '{$0 = tolower($0); gsub(/[a-z]/, "&,"); sub(/,$/, "")} 1' file

关于regex - 如何在shell中的2个字符之间添加逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62474821/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com