sed または同様のツールを使用して、空の文字列をテキストに置き換えます。

sed または同様のツールを使用して、空の文字列をテキストに置き換えます。

一つ交換可能ですか?空の文字列テキスト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

空の入力を検出して文字列を挿入するには、ifnemoreutilsパッケージとその-nオプションを使用できます。

$ printf '' | ifne -n echo sometext
sometext

これは、標準入力ストリームで入力が検出されない場合にのみ実行されますecho sometextifneパイプの左側にある場合する出力するデータを生成します。

$ 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

おすすめ記事