Linux
如何在找到模式後選擇第二列,模式是'100'
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
。