一つ交換可能ですか?空の文字列テキストsed
や類似のツールを使用していますか?
sed 's/^$/sometext/'
一致空行しかし、それは私が望むものではありません。私は思った
sed 's//sometext/'
効果があるようですが、そうでないようです。
grep
この特別な場合は、不一致を検出したいと思います。
echo 'hi' | grep 'sam' | ...
ベストアンサー1
sed
空白行を置き換えるには、空白行を入力する必要があります。
空行自体は改行文字です。これはecho
またはを使用して作成できますprintf '\n'
。
$ printf '\n' | sed 's/^$/sometext/'
sometext
$ echo | sed 's/^$/sometext/'
sometext
置き換えられます。みんな他の行が空でないかどうかに関係なく、入力の空行です。
$ printf '%s\n' "line 1" "" "line 3" | sed 's/^$/sometext/'
line 1
sometext
line 3
空の入力を検出して文字列を挿入するには、ifne
moreutilsパッケージとその-n
オプションを使用できます。
$ printf '' | ifne -n echo sometext
sometext
これは、標準入力ストリームで入力が検出されない場合にのみ実行されますecho sometext
。ifne
パイプの左側にある場合する出力するデータを生成します。
$ printf 'hello\n' | ifne -n echo sometext
hello
不一致検出に関する追加情報は次のとおりですgrep
。
echo 'hi' | grep -q 'sam' || echo no match
または段落ロジックif
の代わりに、then
if ! echo 'hi' | grep -q 'sam'; then
echo no match
fi
これはgrep
対応する-q
オプションと組み合わせて使用され、ユーティリティは非常に静かで終了ステータスのみを使用して一致成功または失敗信号を送信します。 e が一致しない場合、ゼロ以外の終了状態で終了します。上記のコードはこれを検出して実行しますecho no match
。