跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 求助 在 Linux shell 里的替换问题
未分類
12 1 月 2021

求助 在 Linux shell 里的替换问题

求助 在 Linux shell 里的替换问题

資深大佬 : wuxi889 5

现在有个需要需要将例如 AdadaBdaC 参数值替换成 adada-bda-c 这种骚操作怎么处理,大写包括 A-Z

大佬有話說 (23)

  • 資深大佬 : ysc3839

    我只知道 Python 有个 inflection 库可以实现
    https://inflection.readthedocs.io/en/latest/#inflection.parameterize

  • 資深大佬 : xupefei

    用正则表达式把大写字母替换成 -小写字母,然后 trim 掉-

  • 資深大佬 : lululau

    echo AdadaBdaC | ruby -ne ‘puts $_.scan(/[A-Z][a-z]*/).map(&:downcase)*”-“‘

  • 資深大佬 : jdhao

    正则替换?

  • 主 資深大佬 : wuxi889

    @lululau 容器里跑只能用基本命令,大佬你这条用不上了

  • 主 資深大佬 : wuxi889

    @jdhao @xupefei 原谅我做一次伸手党 [手动捂脸]

  • 資深大佬 : bootvue

    干掉这个需求

  • 資深大佬 : RudyS

    sed -i ‘s/A/a/g’ file
    sed -i ‘s/B/-b/g’ file
    sed -i ‘s/C/-c/g’ file

  • 資深大佬 : aheadlead

    shell 真是一言难尽… 给主一个方案吧。。。

    a=$(echo “AdadaBdaC” | sed -e ‘s/([A-Z])/-L1/g’)
    echo ${a#-}

  • 資深大佬 : aheadlead

    @xupefei #2 就是 2L 的方案

  • 資深大佬 : zeroDev

    用 sed,如果要换的多,建议写个脚本文件

  • 資深大佬 : maichael

    echo AdadaBdaC | sed -E ‘s/([A-Z])/_1/g’ | sed -E ‘s/^_//g’ | tr ‘A-Z’ ‘a-z’

  • 資深大佬 : maichael

    @maichael #12 echo AdadaBdaC | sed -E ‘s/([A-Z])/-1/g’ | sed -E ‘s/^-//g’ | tr ‘A-Z’ ‘a-z’

  • 資深大佬 : zpfhbyx

    求助 在 Linux shell 里的替换问题 echo ‘AdadaBdaC’ | sed ‘s/[A-Z][a-z]*/L&-/g’ | sed ‘s/.$//’ centos 下可以,mac 下不行

  • 主 資深大佬 : wuxi889

    @aheadlead @maichael @zpfhbyx 大佬们在上,受小弟一拜,提前百年。我去试试

  • 資深大佬 : libook

    @zpfhbyx Linux 下的 sed 是 GNU sed,MacOS 下的 sed 是 BSD sed,不光 sed,很多指令两者都有区别。
    你要想在 MacOS 下用 GNU 指令就要装 Coreutils,你可以去网上搜如何用 brew 装,以及如何设为默认指令。

  • 資深大佬 : zpfhbyx

    @libook 感谢,我去搜搜,一般都是 linux 下写 shell – – 没细看过

  • 資深大佬 : aheadlead

    @zpfhbyx brew install gsed

  • 資深大佬 : zlowly

    stackoverflow 上有 How to convert a string to lower case in Bash?比较全。抄几条
    POSIX standard
    echo “AdadaBdaC” | tr ‘[:upper:]’ ‘[:lower:]’
    AWK
    echo “AdadaBdaC” | awk ‘{print tolower($0)}’

  • 資深大佬 : atomduanvex

    echo AdadaBdaC | sed -E ‘s/([A-Z])/-1/g’ | sed ‘s/^-//g’ | tr [A-Z] [a-z]

  • 資深大佬 : ideno

    echo ‘AdadaBdaC’ | awk ‘{first=tolower(substr($0, 1, 5)); second=tolower(substr($0, 6, 3)); third=tolower(substr($0, 9)); printf(“%s-%s-%s”, first, second, third);}’

  • 資深大佬 : ideno

    echo ‘AdadaBdaC’ | awk ‘{str=tolower($0);printf(“%s-%s-%s”, substr(str, 1, 5), substr(str, 6, 3), substr(str, 9));}’

  • 主 資深大佬 : wuxi889

    @zlowly @atomduanvex @ideno 感谢感谢

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具