Linux

如何在找到模式後選擇第二列,模式是'100'

  • September 23, 2016

cat file_1:

height 100  3 name
gray   125  8 yellow
base   100  5 age
red    455  9 tea
level  100  7 yak

我最終的最終文件應該只有第二列包含模式“100”

cat final_file:

name 
age
yak

正如 val0x00ff 建議的那樣,awk可以涵蓋這個

這將匹配欄位 2 中任何位置的 100,例如“foo100bar”將匹配。

awk '$2 ~ 100 {print $NF}' file_1 >final_file

這只會匹配欄位 2 中的 100。

awk '$2 == "100" { print $NF }' file_1 >final_file

在一般情況下,我會執行以下程式碼:

#!/bin/bash
matching_column=2  
filename="def"
awk -v matching_col=${matching_column}\
   -v printing_col=$((matching_column+2))\
   '$matching_col ~ 100 {printf "%s\n", $printing_col}' "$filename"  

pattern通過這種方式,您可以使用變數選擇必須匹配的列matching_col。然後,要列印的列計算為printing_col=matching_column+2。並且您可以使用 print_column 欄位中指定的值列印$printing_col

引用自:https://unix.stackexchange.com/questions/311802