4

Bash スクリプトを使用して、特殊文字 (正規表現) を含むテキスト ファイルから行ごとに読み取ります。使用すると、テキストがそのままecho "${SOME_VAR}"表示されません。

私は、bash スクリプトで展開される Prevent* に精通しています。

テキストをそのまま表示して使用するにはどうすればよいですか?

更新 テキスト (TSV) ファイルには、次のようなタプルが保持されます (最後のエントリは psql クエリです)

bathroom    bathroom    select name from photos where name ~* '\mbathroom((s)?|(''s)?)\M';

次のようにCSVを読んでいます:

tail -n+2 text.file | while IFS=$'\t' read x y z
do
    echo "${z}"
done

出力を与える

select name from photos where name ~* 'mbathroom((s)?|(''s)?)M');

「\」がないことに注意してください

4

1 に答える 1

3

-rでフラグを使用してみてくださいread

tail -n+2 text.file | while IFS=$'\t' read -r x y z
do
    echo "${z}"
done

readマニュアルページから:

-r バックスラッシュ文字を特別な方法で処理しません。各バックスラッシュは入力行の一部であると考えてください。

于 2012-08-29T09:37:38.013 に答える