gpt4 book ai didi

linux - 从某一行开始在文件中搜索字符串 否

转载 作者:太空宇宙 更新时间:2023-11-04 09:11:29 27 4
gpt4 key购买 nike

如何使用 bash 脚本在文本文件的某行/之后搜索字符串?

例如我想搜索第一次出现的 "version:" 字符串,但不是在文件开头而是在第 1 行。说 35 其中包含文本 *-disk:0 这样我就只会得到 disk-0 的产品名称,没有别的。我当前的方法如下,其中 line_no 是行号。 disk:0 所在的行。但有时供应商名称也出现在 disk:0version 之间。那时,这个逻辑就失效了。

ver_line_no=$(echo $(( line_no + 6 )))
ver_line_text=`sed -n ${ver_line_no}p $1`
check_if_present=`echo $fver_line_text | grep "version:"`

背景:我正在尝试解析 lshw 命令的输出。

*-disk:0
description: ATA Disk
product: SAMSUNG
physical id: 0
bus info: scsi@z:y:z:0
logical name: /dev/sda
version: abc
serial: pqr
size: 2048GiB
capabilities: axy, pqr
configuration: pqr, abc, ghj
*-disk:1
description: ATA Disk
product: TOSHIBA
physical id: 0
bus info: scsi@p:q:z:0
logical name: /dev/sdb
version: nmh
serial: pqasd
size: 2048GiB
capabilities: axy, pqr
configuration: pqr, abc, ghj

这是示例信息。我想使用 bash 脚本以表格格式打印信息。

最佳答案

你应该可以用 sed 剪切出你想要的 block ,然后使用 grep:

sudo lshw | sed -n '/\*-disk:0/,/\s*\*/p' | grep 'version:'

sed 命令不打印任何行 (-n),然后找到 *-disk:0 和下一个之间的 block * 并仅打印 (p)。

关于linux - 从某一行开始在文件中搜索字符串 否,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55687825/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com