私はファイル内の数字のリストで、文字列から特定の数字を1つ検索します。
Es. 1 54 67 78 32
11 4 67 89 90
13 67 87 32 21
私のクエリは1です。
この数値を出力するには、awk または grep コマンドを使用します。
1
11
13
21
grep -w 1
awk '/12/'
しかし、1回ではありません
これは正しいアクションですか?行1で特定の2つの数字を検索しますか?
答え1
それでは、指定された数字を含む数字が必要ですか?たとえば、次のように数字パターンをに追加します1
。
grep -ow '[0-9]*1[0-9]*' infile
出力:
1
11
13
21
編集する
Stéphaneが指摘したように、これは正の整数でのみ機能します。提案されたものと同様のより一般的な解決策が必要な場合ここより良くなります。以下は、推奨正規表現を使用するperlre grepのバージョンです。
grep -oP '[+-]?(0|[1-9]\d*)(\.\d*)?([eE][+-]?\d+)?' infile
1
aを含むすべての数字を見つけるには、出力をに渡すだけですgrep 1
。
答え2
私は以下の2つの方法で試しました。
h=`awk '{print NF}' filename| sort | uniq| sort -nr | sed -n '1p'`
praveen@praveen:~$ for ((i=1;i<=$h;i++))
do
awk -v i="$i" '$i ~ /1/{print $i}' filename
done
出る
1
11
13
21
2番目の方法
sed -r "s/\s+/\n/g" ファイル名 awk '/1/{print $0}'
1
11
13
21