パイプで連結されたテキストをgrepとして扱うには?

パイプで連結されたテキストをgrepとして扱うには?

grepのようなスクリーン印刷を処理するスクリプトが欲しい。
次のように実行できます。 cat file.txt私のスクリプト

以下のスクリプトを試しましたが、何も印刷されませんでした。

#!/bin/bash
line=$@
echo $line 

ベストアンサー1

@glemcoの答えと同じ考えですが、このバージョンは特殊文字(NULLバイトを除く)に対して安全でなければなりません。

#!/bin/bash
while IFS= read -r line
do
  printf '%s\n' "$line"
done
  • IFS=先行スペースと末尾のスペースが切り捨てられるのを防ぐためです。
  • -rバックスラッシュエスケープ処理を防ぐために使用されます。
  • "二重引用符は、"$line"グローバル拡張を防ぎ、スペースシーケンスが単一のスペースで置き換えられるのを防ぐためのものです。

おすすめ記事