【发布时间】:2017-12-15 07:28:46
【问题描述】:
我需要从文本文件的每一行中提取所有 K[A-Z]{4} 和 US[C,W][0-9]{8} 值。
我正在使用下面的代码来尝试实现这一点,但是,我需要根据 ONLY 两者都存在于给定行(即最后三行)时的条件来提取这些值在下面的数据中)。
尝试的代码:
#Filters out any values matching K[A-Z]{4}
grep -Po '"\K[A-Z]{4}\b' usc.matched > out.1
#Filters out any values matching US[C,W][0-9]{8}
grep -Po '\bUS\w*' usc.matched > out.2
#Pastes two datasets together, separated by a comma
paste -d',' out.1 out.2 > stations.filtered
#Removes any lines that do not lead with "K"
sed -i '/^[^K]/d' stations.filtered
JSON 数据:
{"sids": ["94737 1", "RUT 3", "KRUT 5"], "name": "RUTLAND STATE AP"},
{"sids": ["54740 1", "VSF 3", "KVSF 5", "USW00054740 6"], "name": "SPRINGFIELD HARTNESS AP"},
{"sids": ["94601 1", "RKD 3", "KRKD 5"], "name": "ROCKLAND KNOX CO RGNL AP"},
{"sids": ["20B 3"], "name": "ROCKLAND STN"},
{"sids": ["177250 2", "USC00177250 6"], "name": "ROCKLAND"},
{"sids": ["177255 2", "USC00177255 6", "RCKM1 7"], "name": "ROCKLAND"},
{"sids": ["177260 2"], "name": "ROCKLAND MOORING LBS"},
{"sids": [], "name": "ROCKLAND"},
{"sids": ["14612 1"], "name": "ROCKLAND"},
{"sids": ["274380 2", "USC00274380 6"], "name": "KEARSARGE"},
{"sids": ["192770 2", "USC00192770 6"], "name": "FISKDALE"},
{"sids": ["US1CTNL0005 6", "CTNL0005 10"], "name": "OAKDALE 2.6 WNW"},
{"sids": ["063989 2", "USC00063989 6"], "name": "LAKE KONOMOC"},
{"sids": ["14740 1", "14721 1", "063456 2", "069704 2", "BDL 3", "72508 4", "KBDL 5", "USW00014740 6", "BDL 7"], "name": "HARTFORD-BRADLEY INTL AP"},
{"sids": ["94702 1", "060806 2", "BDR 3", "72504 4", "KBDR 5", "USW00094702 6", "BDR 7"], "name": "IGOR I SIKORSKY MEMORI AP"},
{"sids": ["54734 1", "DXR 3", "KDXR 5", "USW00054734 6"], "name": "DANBURY MUNI AP"},
电流输出:
KRUT,
KVSF,USW00054740
KRKD
USC00177250
USC00177255
USC00274380
USC00192770
US1CTNL0005
USC00063989
KBDL,USW00014740
KBDR,USW00094702
KDXR,USW00054734
预期输出:
KVSF,USW00054740
KBDL,USW00014740
KBDR,USW00094702
KDXR,USW00054734
【问题讨论】:
-
是的,我已经安装了
jq。我还附加了当前输出和预期输出以帮助进一步定义我正在尝试做的事情