bash中的文件解析.分隔不同的子部分

  • 本文关键字:文件 bash 分隔 linux bash
  • 更新时间 :
  • 英文 :


可能的重复项:
bash, 解析文件的一部分

Case 4
case 4.1
a 3
a 5
a 7
a 1
a 9
a 4
endcase 4.1
//
.
.
. Do things that don't get parsed
.
.
//
case 4.2 
a 1
b 3
a 6
b7 
endcase 4.2
endcase 4 
//
.
.
.
. More things
.
.
// 
case 5
.
.
.
.
endcase 5

考虑上面的示例文件。 awk '/^case 4.2/,/^endcase 4.2/' ./my_file.txt

将仅从文件中提取所需部分中包含的信息。那么,我将如何从这个较小的部分仅提取以"a"开头的行?我的文件比示例复杂一些,但我认为逻辑仍然适用。

你可以

用sed来做到这一点:

sed -n -e '/^case 4[.]2/,/^endcase 4[.]2/ { /^a/p }' my_file.txt

-n只告诉 sed 打印我们告诉它的行。大括号是一组命令,通过使用的地址前缀(与您在awk中使用的地址前缀相同),我们保证它们仅在案例块中执行。该组仅包含一个命令,即"p"打印命令。但是,我们在此命令前面加上另一个地址前缀。这个告诉它仅在行以"a"开头时才执行。

通过嵌套地址,我们可以执行"case 4.2"和"endcase 4.2"行之间以"a"文本开头的命令

希望这有帮助=)

对于 awk,我认为这可能有效,但它没有

awk '/^case 4.2/,/^endcase 4.2/ && /^a/' filename

相反,这有效:

awk '/^case 4.2/,/^endcase 4.2/ {if (/^a/) print}' filename

相关内容

  • 没有找到相关文章

最新更新