条件を満たす行を取り除く
Posted feedbacks - Bash
シェルスクリプトで頑張ろうと思ったけど、入力で先頭の空白を無視しない方法が分からなくて断念。 read LINE で # don't を入力すると LINEに"# don't"と入るみたい。 可能だったら、 echo $LINE | grep -v "^#"みたいにしたかった。
1 | grep -v "^#"
|
read は引数を指定しない場合、末尾の改行文字のみを削除します。
「先頭の空白」が無視されるのは、 引数の渡し方によるのではないでしょうか。
単語分割のさいに空白は、なくなります。
echo ”$LINE” のように、クォートしてみてください。
1 2 3 4 5 6 7 8 9 10 11 12 | #! /bin/bash
function echo_if_not_comment(){
[ "${1:0:1}" != '#' ] && echo -n "$1"
}
while read -r; do
if [ -z "$REPLY" ]; then
echo
else
echo_if_not_comment "$REPLY"$'\n'
fi
done
echo_if_not_comment "$REPLY"
|
アドバイスありがとうございます。 問題は read LINE とやっていた事みたいです。
1 2 3 4 5 6 7 8 9 | #!/bin/bash
# 失敗したパターン
# read LINE
# echo "$LINE" | grep -v "^#"
while read -r; do
echo "$REPLY" | grep -v "^#"
done
|




にしお
#3366()
Rating0/0=0.00
サンプル入力
サンプル出力[ reply ]