[英]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.