文字列の例
blah:blah:example - 1234
blah1:blah2:example2 - 3213
コンテンツが存在することを確認したい。
- 1234
しかし、数字は異なる場合があります
私は使用できることを知っています
awk -F: '$3 ~ / - /'
「-」があることを確認してください。しかし、数値の可能性を適用する方法は?
答え1
基本的に「-」の後に数字があることを確認したいですか?
したい場合は、このように書くことができます
awk -F: '$3 ~ / - [0-9]+/'
より進化したソリューション
最後の数値に可能な値の配列(たとえば、1、2、3、4、5)がある場合は、次のように書くことができます。
values=(1 2 3 4 5)
awk -v vals="$(echo ${values[@]})" \
'{if(match(vals,$3" ")){print $0}}' input_file.txt
これにより、指定した配列input_file.txt
の最後の数字を持つ項目のみが印刷されます。values
答え2
次のコマンドは、最後の2番目のスペースで区切られた列にaを含み、最後のスペースで区切られた列に正の整数を含むすべての行を表示しますawk
。file
-
awk '$(NF-1) == "-" && $NF ~ /^[0-9]+$/' file
次のgrep
コマンドは同じことを行います。
grep -E -e '-[[:space:]]+[0-9]+$' file
パターンの修飾子-E
を理解するために必要であり、パターンの修飾子をコマンドラインオプションとして解釈するのをやめる必要があります(コマンドラインオプションの終わりを示す置換に変更される可能性があります)。+
-e
grep
-
-e
--