ファイルで位置検索を実行し、他のファイルに記録された一致パターンを含む行を見つける方法[閉じる]

ファイルで位置検索を実行し、他のファイルに記録された一致パターンを含む行を見つける方法[閉じる]

ファイルサイズが大きく、可変長(2バイトから8バイト)の特定の位置コードに一致する行のみを抽出する必要があります。

悪い結果につながる可能性があるため、通常のgrepは使用できません。 loc cd masを検索するときにgrep mas次のように入力すると、thomasという名前と一致します。

固定長のファイルなので、どこで検索する必要があるのか​​がわかります。特定の場所(私の場合は620-628)を検索して一致する行を抽出するコマンドがありますか?

答え1

sedこれに非常に適しています

sed -n '620,628 { /mas/p }'

sedこれで、興味のある最後の行を読んで終了することもできます(したがって、より速く実行されます)。

sed -n -e '620,628 { /mas/p }' -e '629q'

完全な単語マッチングのために式を束ねて変更することができます。\b

例えば

sed -n -e '620,628 { /\bmas\b/p }' -e '629q'

今一致するthis contains mas and stuffいいえマッチthis is a masterful piece of work

答え2

頑張ります

awk '/mas/ && NR >= 620 && NR <= 628' file

どこ

  • NR(レコード数)は行番号です.
  • /mas/パターン検索中
  • デフォルトの動作はラインを印刷することです

答え3

頑張ります

grep -P '^.{620}mas' file

スキーマが変更された場合は変数を使用できます

PAT='mas\b'
grep  -nP "^.{620}$PAT" file

関連情報