特定の番号を検索

特定の番号を検索

私はファイル内の数字のリストで、文字列から特定の数字を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

1aを含むすべての数字を見つけるには、出力をに渡すだけです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

関連情報