You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用awk提取文本?匹配import后打印至行首为}时停止

文本提取:从"import "开始打印到行首"}"停止

修正后的awk命令

awk '/^}/ {f=0} /import / {f=1} f' input

适配带前置空格的import语句(更通用)

如果需要匹配行首带空白字符的import(比如缩进后的import语句),可以用:

awk '/^}/ {f=0} /^\s*import / {f=1} f' input

原命令的问题分析

  1. 匹配范围过窄:原命令仅匹配import org或前置空格的 import org,无法覆盖其他开头的import语句(比如import java.util.*;),不符合"找到字符串'import '就开始"的需求。
  2. 逻辑冗余:原命令的条件判断写得过于复杂,且没必要限制import的后续内容。

命令逻辑拆解

  • /^}/ {f=0}:遇到行首为}的行时,将打印标志f设为0,停止后续打印。
  • /import / {f=1}:遇到包含import (注意末尾有空格)的行时,将打印标志f设为1,开始打印。
  • f:awk的简写语法,等价于if(f) print $0,当f为真时打印当前行。

示例验证

输入示例:

public class Demo {
    init code
    import org.test.Utils;
    import java.util.Map;
    process line
}
post content

输出示例:

import org.test.Utils;
    import java.util.Map;
    process line

内容的提问来源于stack exchange,提问作者albertkao9

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 22:32:47