簡體   English   中英

Grep僅匹配多個分開的字符串

[英]Grep matches only of multiple separated strings

我有一個包含以下格式的行的文件:

fieldA=value1, fieldB=value2, fieldC=value3, fieldD=value4, fieldE=value5

我對fieldA,fieldB,fieldD感興趣。 但是,fieldC可能存在或可能不存在,因此我不能使用類似以下內容的東西:

grep "field" * | awk -F"," '{print $1, $2, $4}'

我的最終目標是在一排中獲得如下所示的輸出:

fieldA=value1, fieldB=value2, fieldD=value4

我嘗試使用grep -E ,但是它以不同的行輸出這些字段,並且字段之間的關聯中斷。

grep -o -E "field1_=\w*|field2_=\w*|field3_=\w*"

如果您知道A,B,D的字段名稱,則grep和xargs可以完成此工作。 (awk / sed肯定可以做到)

grep -Po "fieldA=[^,]*|fieldB=[^,]*|fieldD=[^,]*" file|xargs -n3

這給你:

fieldA=value1 fieldB=value2 fieldD=value4

如果要在輸出中使用逗號:

grep -Po "fieldA=[^,]*,|fieldB=[^,]*,|fieldD=[^,]*" file|xargs -n3

sed解決方案可以接受嗎?

sed 's/^\([^ ]* [^ ]*\).*\(fieldD=[^,]*\).*/\1 \2/' filename

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM