[英]bash/sed script to get output from a file using a regex
我有一個文件,該文件在文件的其他行之間包含以下形式的行object 0: data: 2
, object 0: data: 232132
。
我需要從文件中提取所有object i
的data
值,並將它們空間分開存儲在輸出文件中,例如使用bash
或sed
output
。
如果有人可以幫助我實現這一目標,那就太好了。
輸入示例 :
num objects: 3
object 0: name: 'x'
object 0: size: 4
object 0: data: 1
object 1: name: 'y'
object 1: size: 4
object 1: data: 3231
object 2: name: 'x'
object 2: size: 4
object 3: data: -32
輸出示例:
1 3231 -32
您可以使用如下形式:
awk '$3=="data:"{print $4}' file
當第三個字段等於“ data:”時,將輸出第四個字段。
更簡短地說,您可以匹配模式/data:/
:
awk '/data:/{print $4}' file
要在同一行上輸出數字,請使用printf
而不是print
。 為了使內容更整潔,可以使用數組並在END
塊中打印值:
awk '/data:/{a[++n]=$4}END{for(i=1;i<=n;++i)printf "%s%s",$4,(i<n?FS:RS)}' file
使用這樣的數組可以輕松地用空格FS
分隔每個值,並在末尾添加換行符RS
。
這些命令中的任何一個都可以使用redirection > output
生成輸出文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.