gpt4 book ai didi

linux - 如何使用 sed 替换包含整数的行

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

我有一个包含两个字段的文件。第一个字段可能包含也可能不包含整数。如果它包含一个整数并且该整数后面有一个点,我想操作第二个字段的一部分。举个例子:

301.    301+Num+Ord          # Change this one 301+Num+Card
100. 100+Num+Ord # Change this one 100+Num+Card
3'üncü 3+Num+Ord # DONOT CHANGE THIS ONE
48.7 48.7+Num+Real # DONOT CHANGE THIS ONE EITHER . is not at the end
24 24+Num+Card # DONOT CHANGE THIS ONE No dot
4. 4+Num+Ord # Change this one 4+Num+Card
. .+Punct # DONOT CHANGE THIS ONE

由于我对正则表达式的了解非常有限,所以我无法做到这一点。如果您能帮助我,我将非常感激。谢谢

最佳答案

您能否尝试执行 awk 命令,并告诉我这是否对您有帮助。由于您没有告诉我们您想要在第二列位置放置的下一个文本是哪个,以防需要更改,所以我只是采用一个测试字符串。

awk '($1 ~ /[0-9]+\.$/){sub("Ord","Card",$2)} 1' OFS="\t" Input_file

说明: awk默认分隔符为空格,所以 $1此处代表第 1 列。所以我在这里通过执行 $1 ~ /[0-9]+\./$ 进行检查在这里,如果第一列中有数字,最后一列有一个点( \. 意味着我正在使用转义序列来删除这里 DOT 的特殊含义),如果是,那么我替换 ordcard在第二个字段中使用 sub (替代) awk 的效用这里。然后1意味着我在这里使条件为 TRUE,并且在这里没有提及和操作,因此默认情况下会发生操作打印。

关于linux - 如何使用 sed 替换包含整数的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46528855/

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