簡體   English   中英

從第一列中提取子字符串

[英]Extract substring from first column

我有2列的大型文本文件。 第一列既大又復雜,但其中包含name="..."部分。 第二列只是一個數字。

如何生成文本文件,使得第一列僅包含名稱,而第二列保持不變並顯示數字? 基本上,我只想從第一列中提取一個子字符串,並使第二列保持不變。

樣本數據:

application{id="1821", name="app-name_01"} 0
application{id="1822", name="myapp-02", optionalFlag="false"} 1
application{id="1823", optionalFlag="false", name="app_name_public"} 3
...

所以結果文件將是這樣的

app-name_01     0
myapp-02        1
app_name_public 3
...

如果您的實際Input_file與所示示例相同,則以下代碼可能會幫助您。

awk '{sub(/.*name=\"/,"");sub(/\".* /," ")} 1'  Input_file

輸出如下。

app-name_01 0
myapp-02 1
app_name_public 3

使用GNU awk

$ awk 'match($0,/name="([^"]*)"/,a){print a[1],$NF}' infile
app-name_01 0
myapp-02 1
app_name_public 3

非高克

awk 'match($0,/name="([^"]*)"/){t=substr($0,RSTART,RLENGTH);gsub(/name=|"/,"",t);print t,$NF}' infile
app-name_01 0
myapp-02 1
app_name_public 3

輸入:

$ cat infile
application{id="1821", name="app-name_01"} 0
application{id="1822", name="myapp-02", optionalFlag="false"} 1
application{id="1823", optionalFlag="false", name="app_name_public"} 3
...

這是一個sed解決方案:

sed -r 's/.*name="([^"]+).* ([0-9]+)$/\1 \2/g' Input_file

說明:

有了這些寄生蟲,您的商店便可以分組。
第一組是name="之后的所有內容,直到第一個" [^"]意思是“不是雙引號”。
第二組簡單地是“在行的末尾有一個或多個數字”。

暫無
暫無

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

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