bash/sed 使用正则表达式从文件中获取输出的脚本

bash/sed script to get output from a file using a regex


我有一个文件,在文件的其他行之间包含 object 0: data: 2object 0: data: 232132 形式的行。
我需要提取 data 文件中所有 object i 的值并将它们 space 单独存储在输出文件中,比如 output 使用 bashsed.
如果有人可以帮助我实现这一目标,那就太好了。

示例输入:

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 '=="data:"{print }' file

当第 3 个字段等于 "data:" 时输出第 4 个字段。

更短的,你可以只匹配模式 /data:/:

awk '/data:/{print }' file

要在同一行输出数字,请使用 printf 而不是 print。为了保持整洁,您可以使用数组并打印 END 块中的值:

awk '/data:/{a[++n]=}END{for(i=1;i<=n;++i)printf "%s%s",,(i<n?FS:RS)}' file

使用这样的数组可以很容易地用 space FS 分隔每个值并在末尾添加换行符 RS

这些命令中的任何一个都可以使用重定向生成输出文件 > output