ファイルサイズが大きく、可変長(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