16 如果第一个字段以Linux1开头,如何打印行 例如: echo Linux1_ver2 12542 kernel-update | awk '{if ($1 ~ Linux1 ) print $0;}' 目标是打印行,而第一个字段以Linux1开头 行示例: Linux1-new 36352 Version:true Linux1-1625543 9847 Linux1:16254 8467563 备注-空格或TAB可能在第一次提交之前 text-processing awk — 耶尔 source
15 单程: echo "Linux1_ver2 12542 kernel-update" | awk '$1 ~ /^ *Linux1/' — 古鲁 source $ 1和^是多余的。您的提案不包含标签。 — Hauke Laging @HuakeLaging您为什么认为$ 1和^是多余的?我很确定都需要两个单词,以便仅将第一个单词与之匹配,并且使匹配锚定在开头(例如,“ / Linux1 /”可以匹配“ mLinux”,但不能由“ / ^ Linux /”匹配)。 — 尼克·布尔
19 分配字段时,awk会忽略前导空格。默认命令是print。 awk '$1 ~ /^Linux1/' 是你想要的。 详细说明: $ 1告诉awk查看第一个“列”。 〜告诉awk做一个RegularExpression匹配/..../是一个正则表达式。 RE中包含字符串Linux和特殊字符^。 ^使RE从头开始匹配(而不是在行中的任何地方匹配)。 一起看到:Awk将在第一列的开头将正则表达式与“ Linux”匹配。 — 约翰 source
2 这应该适用于此特定情况。 awk '/^[[:blank:]]*Linux1/ {print}' — 伯恩哈德 source 但是,如果Linux1之前的空间不匹配 — yael 2013年 @yael我进行了修改以更正此错误。 — Hauke Laging +1对任何想知道此语法在做什么的人来说:这是“仅当正则表达式与该行匹配时才在括号内执行操作”。 — user541686 '18