テキストファイルがあるとしましょう。
txt.txt
hello supdijfdsfsddsgs
hghgh hsdjghjfhgjfhgjfhg
hghgh yyyyyereuryueyruey
5
最初の文字だけがシーケンスになるようにこの行を印刷したいと思いますhghgh
。
だから印刷する必要があります
hghgh hsdjghjfhgjfhgjfhg
hghgh yyyyyereuryueyruey
egrepはどうすればいいですか?
egrep -5 "hghgh" txt.txt
?
答え1
これにより、次のようになります。
grep '^hghgh' txt.txt
egrep
isは(isgrep -E
と同様に)拡張正規表現を使用する必要はないので、ここでは必要ありません。fgrep
grep -F
-E
^hghgh
(デフォルト)行の先頭のリテラル文字列と一致する正規表現です。パターンを線の先頭に固定しますhghgh
。^
似合いたい場合精密文字列は、たとえば部分文字列ではhghgh
なく行の先頭にあります。次に、式の末尾にまたはを使用して単語の末尾に一致させます。hghghaaaaaa
hghgh
\>
\b
[[:>:]]
grep '^hghgh\>' txt.txt
または、awk
最初のフィールドを使用して文字列比較を実行します。
awk '$1 == "hghgh"' txt.txt
答え2
この猫の皮をむく方法はいくつかあります。
grep
(grep -E
と動作しますegrep
が、grep
ここでは基本的に動作します):
grep '^hghgh' /path/to/input
そしてsed
:
sed -n '/^hghgh/p' /path/to/input
sed '/^hghgh/!d' /path/to/input
そしてawk
:
awk '/^hghgh/' /path/to/input
これは次の略語です。
awk '/^hghgh/ { print $0 }' /path/to/input
または
awk 'index($0, "hghgh") == 1' /path/to/input
または
awk 'substr($0, 1, 5) == "hghgh"' /path/to/input