最初のフィールドが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が最初のコミットの前に来ることができます。
答え1
awkはフィールドを割り当てるときの先行スペースを無視します。デフォルトのコマンドは印刷です。
awk '$1 ~ /^Linux1/'
あなたが望むもの。
上海:
- $ 1はawkに最初の「列」を表示するように指示します。
- ~ は awk に正規表現マッチングを実行するよう指示します。 /..../ は正規表現です。
- REにはLinux文字列と特殊文字^が含まれています。
- ^を使用すると、REは最初から一致します(行のどの位置でも一致するのではなく)。
一緒に見てみましょう。 awkは、最初の列の先頭に「Linux」がある正規表現と一致します。
答え2
一方通行:
echo "Linux1_ver2 12542 kernel-update" | awk '$1 ~ /^ *Linux1/'
答え3
これはこの特定のケースに適用されます。
awk '/^[[:blank:]]*Linux1/ {print}'