gpt4 book ai didi

regex - 如何在Linux中仅用字母之间的下划线替换空格,忽略数字

转载 作者:太空宇宙 更新时间:2023-11-04 04:42:30 25 4
gpt4 key购买 nike

使用Linux,我需要一种用下划线替换字符串中的空格的方法。特殊之处在于仅在两个字母之间执行此操作(无论是大写还是小写)。不在两个数字或数字和字母之间。

示例:

"This is a test File of 100 MB Size - 45 of 50 files processed"

输出应该是:

"This_is_a_test_File_of 100 MB_Size - 45 of 50 files_processed"

预先感谢您的帮助。

我尝试了很多 sed 正则表达式组合,但没有一个能完成这项工作。看起来有点棘手。

sed 's/\([a-z]\)[[:space:]]\([A-Z]\)/_/g'
sed 's/\([a-z]\) \([A-Z]\)/_/g'

最佳答案

一种在数字周围放置连字符并处理单词边界的方法:

sed -E 's/([0-9_])/-\1-/g;s/\b \b/_/g;s/-([0-9_])-/\1/g' file
<小时/>

或者更直接地使用 perl:

perl -pe's/\pL\K (?=\pL)/_/g' file

关于regex - 如何在Linux中仅用字母之间的下划线替换空格,忽略数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57187056/

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