bash/sed 使用正则表达式从文件中获取输出的脚本
bash/sed script to get output from a file using a regex
我有一个文件,在文件的其他行之间包含 object 0: data: 2
、object 0: data: 232132
形式的行。
我需要提取 data
文件中所有 object i
的值并将它们 space 单独存储在输出文件中,比如 output
使用 bash
或 sed
.
如果有人可以帮助我实现这一目标,那就太好了。
示例输入:
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
。
我有一个文件,在文件的其他行之间包含 object 0: data: 2
、object 0: data: 232132
形式的行。
我需要提取 data
文件中所有 object i
的值并将它们 space 单独存储在输出文件中,比如 output
使用 bash
或 sed
.
如果有人可以帮助我实现这一目标,那就太好了。
示例输入:
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
。