sed
などを使用して、以下の正規表現文字列^li
テキスト(ファイルではない)からに一致する行を抽出するにはどうすればよいですか?
linux
loan
litmus
launch
grep
を試しましたが、テキストファイルではなく、引用されたテキスト内を検索する方法が見つかりませんでした。
grep -n -i "^li" "linux
loan
litmus
launch"
No such file or directory
を返します。また、可能であれば、検索する前にこのテキストをファイルとして保存したくありません。
ここで herestring (<<<
)を使用して、文字列を入力としてgrep
に渡す必要があります。ここで、herestringはファイル記述子を返し、grep
は操作できます。その上で:
$ grep -ni "^li" <<<"linux
loan
litmus
launch"
出力:
1:linux
3:litmus
シェルがherestringsをサポートしていない場合、多くのシェルはサポートしていません。文字列を出力してgrep
にパイプできます。
$ echo "linux
loan
litmus
launch" | grep -n -i "^li"
1:linux
3:litmus
または、ヒアドキュメント(<<
)を使用します。
$ grep -ni "^li" <<EOF
> linux
> loan
> litmus
> launch
> EOF
1:linux
3:litmus
sed
を使用すると、sed -n '/^li/p'
を使用できます
@heemaylの例を使用する
$ echo "linux
> loan
> litmus
> launch" | sed -n '/^li/p'
linux
litmus
あなたはただすることができます:
grep \^li
そして、あなたのものをタイプし始めます。 grep
は端末を読み取ります。 sed
も同じことをします。使用する CTRL+D
それらを停止し、... >saved_output_file
エフェクトを保存するためのリダイレクトを出力します。