仅当行以特定单词开头时才打印文件中的字段

仅当行以特定单词开头时才打印文件中的字段

我有以下文件:


   LINK=dummy 172.17.100 => 10.218.11 [PATH=/etc]
      FILE=hosts 172.17.100 => 10.218.11 [PATH=/etc]
       FILE=network 172.17.100 => 10.218.11 [PATH=/etc/sysconfig]
     LINK=empty 172.17.100 => 10.218.11 [PATH=/etc]
   FILE#TEST 172.17.100 => 10.218.11 [PATH=/etc/sysconfig]

……

仅当行以单词开头时如何打印第一个字段和第五个字段FILE

该单词FILE可以直接位于行的开头,也可以位于行中的空格或 TAB 之后。

我期望得到的示例

  FILE=hosts   [PATH=/etc]
  FILE=network [PATH=/etc/sysconfig]
  FILE#TEST    [PATH=/etc/sysconfig]

我尝试了这个 awk 但不起作用

awk '$1 == "^[[:blank:]]*FILE*" && '{print $1" "$5}'  file

答案1

awk '$1 ~ /^FILE/ { print $1 " " $5 }'

您的方法不起作用,因为==检查字面相等性,而不是正则表达式;你需要~为此使用。

答案2

尝试这样做:

awk '/^ *FILE=/{print $1, $5}'

或者

awk '/^[[:blank:]]*FILE=/{print $1, $5}'

相关内容