【问题标题】:Extract Four-Character Matches from Strings从字符串中提取四字符匹配
【发布时间】:2017-12-14 10:34:36
【问题描述】:

我需要从以下字符串中提取以下四个字符的匹配项:

网站:

KPAE
KPSC
KPUW
KRNT
KSEA
KSFF
KSHN
KTIW

数据:

{"sids": ["24222 1", "452670 2", "PAE 3", "KPAE 5", "USW00024222 6"], "name": "EVERETT SNOHOMISH AP"},
{"sids": ["24163 1", "PSC 3", "KPSC 5", "USW00024163 6"], "name": "PASCO TRI CITIES AP"},
{"sids": ["94129 1", "PUW 3", "KPUW 5", "USW00094129 6"], "name": "PULLMAN MOSCOW RGNL AP"},
{"sids": ["94248 1", "RNT 3", "KRNT 5", "USW00094248 6"], "name": "RENTON MUNI AP"},
{"sids": ["24233 1", "457473 2", "SEA 3", "72793 4", "KSEA 5", "USW00024233 6", "SEA 7"], "name": "SEATTLE TACOMA INTL AP"},
{"sids": ["94176 1", "SFF 3", "KSFF 5", "USW00094176 6"], "name": "SPOKANE FELTS FLD"},
{"sids": ["94227 1", "457585 2", "SHN 3", "KSHN 5", "USW00094227 6", "SHN 7"], "name": "SHELTON SANDERSON FLD"},
{"sids": ["94274 1", "TIW 3", "KTIW 5", "USW00094274 6"], "name": "TACOMA NARROWS AP"},

我尝试从字符串中提取这些匹配项,但是它们的位置可以从一个字符串更改为另一个字符串...

尝试的代码:

awk -F',' '{print $5}'

【问题讨论】:

    标签: regex string bash unix awk


    【解决方案1】:

    使用grep -oP

    grep -Po '"\K[A-Z]{4}\b' file
    
    KPAE
    KPSC
    KPUW
    KRNT
    KSEA
    KSFF
    KSHN
    KTIW
    

    【讨论】:

    • 嗨。我怎样才能去提取所有匹配 US* 的值
    • 您好,很抱歉缺少信息...我还希望提取所有类似于以下内容的值:USW00024163
    • 你可以使用:grep -Po '\bUS\w*|"\K[A-Z]{4}\b' file
    • 谢谢!如何获得以以下格式逐行打印的结果? KPAE,USW00024222
    • 请不要通过 cmets 扩展问题。你可以这样做:grep -Po '\bUS\w*|"\K[A-Z]{4}\b' file | awk -v OFS=, 'NR%2{p=$1; next} {print p, $1}'
    猜你喜欢
    • 2023-03-17
    • 2019-03-14
    • 1970-01-01
    • 2020-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-31
    相关资源
    最近更新 更多