gpt4 book ai didi

regex - 使用 Sed/Regex 根据定界符在 bash 中拆分一行

转载 作者:行者123 更新时间:2023-11-29 09:35:35 24 4
gpt4 key购买 nike

Regex 菜鸟并希望改变它。我有以下看似非常简单的问题,我无法确定正确的正则表达式实现来正确解析。基本上我有一个包含如下行的文件:

time:3:35PM

我只是想删除所有字符,包括 ONLY FIRST ':' 定界符,并使用 sed 保持其余字符完整,以便我可以处理许多具有相同格式的文件。我想要得到的是:

3:35PM

下面是我得到的最接近的,但只是使用最后一次出现的定界符而不是第一个。:

sed 's/.*://'

我也尝试过使用 python,但在应用 python 函数遍历许多文件中的所有行而不是仅仅一个文件时遇到了挑战。

如有任何帮助,我们将不胜感激。

最佳答案

您几乎可以在每个文本处理工具中执行此操作(许多根本不使用正则表达式)。

编辑

如果就地编辑真的很重要,那么规范的正确方法不是 sed( 编辑器)而是 ed(文件 编辑器)。

ed "$file" << EOF
,s/^[^:]*://g
w
EOF

种子

(与 ed 几乎相同的命令,格式略有不同)

sed 's/^[^:]*://' < "$file" > "$file".new
mv "$file".new "$file"

巴什

这个不会导致产生任何新进程。 (无论它值多少钱。)

while IFS=: read _ time; do
printf '%s\n' "$time"
done < "$file" > "$file".new
mv "$file".new "$file"

awk

awk -F: 'BEGIN{ OFS=":" } { print $2,$3 }' < "$file" > "$file".new
mv "$file".new "$file"

cut -d: -f2- < "$file" > "$file".new
mv "$file".new "$file"

关于regex - 使用 Sed/Regex 根据定界符在 bash 中拆分一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18806186/

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