子串而不删除字段字符

马修·奥布莱恩(Matthew O'Brian)

我有一个要在awk中子字符串化的字符串(或剪切或sed,无论如何)。

但是我想维护字段分隔符。

该文件在字段分隔符之后具有完全随机数量的垃圾,随机数量的字符。

例如

Dogs.pgp.123sda
Dogs.pgpsjaksdasdasdaw
Dogs.pgp-asasdawad2

我希望所有三个输出为:

狗狗

显然,这里的公共字段是“ .pgp”,但是标准awk总是删除字段分隔符。

'{sub(/.pgp.*/,""); print}'

或者

awk -F".PGP." '{print $1}'

有没有办法维护分隔符?

库萨兰达
for string in Dogs.pgp.123sda Dogs.pgpsjaksdasdasdaw Dogs.pgp-asasdawad2
do
    printf '%s --> %s\n' "$string" "${string%${string#*.???}}"
done

输出:

Dogs.pgp.123sda --> Dogs.pgp
Dogs.pgpsjaksdasdasdaw --> Dogs.pgp
Dogs.pgp-asasdawad2 --> Dogs.pgp

循环遍历三个字符串。在循环的主体中,原始字符串与转换后的字符串一起打印。

通过除去字符串中第一个点之前的部分和该点之后的三个字符,除去所有内容,从而对字符串进行转换。

首先确定要从原始字符串中删除的内容。这是${string#*.???},即删除了第一个点和另外三个字符之后的字符串的其余部分。然后通过删除字符串末尾的内容${string%${string#*.???}}

如果循环遍历匹配例如的文件名*.pgp*,则这还将处理文件名包含换行符的情况。唯一会使上面的转换混乱的是.pgp子字符串前面是否有点,但是您可以通过.pgp显式匹配而不是.???

for fname in *.pgp*
do
    printf '%s --> %s\n' "$fname" "${fname%${fname#*.pgp}}"
done

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

字符串不删除

如何从文本中删除重复的子字符串而不删除重复的标点符号?

分割字符串而不删除半角

是否可以通过子字符串拆分而不删除它?

在 Python 中删除字符串而不删除重复字符

删除BigQuery STRING字段内的重叠子字符串

从字符串中删除新行而不删除“\n”?

删除部分属性字符串而不删除属性

将字符串转换为int而不删除零

PowerShell:拆分字符串而不删除拆分模式?

removefromSuperView不删除子视图

从字符串中间删除一个字符:不删除内部元素

在Objective-C中分割字符串而不删除分割字符串

从表的多行中删除varchar字段中的子字符串

Sqlite - 如何使用通配符删除字段中的子字符串

mySQL Update字段删除子字符串后的所有内容

切字符之间的字符串,并且不删除那些字符

MongoDB查询字段的子字符串

删除python多行注释并且不删除字符串

从字符串中删除空格但不删除lua中的新行

删除字符串中的空白而不删除换行符

从列表中删除数字,但不删除字符串中的数字

如何从字符串中删除参数而不删除任何潜在的重复项?

如何从字符串VBA中删除单个空格(不删除连续空格)

如何从字符串中删除句号但不删除小数位?

从 json 字符串中删除字段

删除包含特定字符串的字段

使用字典替换字符串,而不删除熊猫数据框中的字符

删除子字符串,直到行尾