改行文字を次のように一致させることができます\n
。
echo "one
two" | sed 'N;s/\n/_/g'
GNUでは、改行文字を除くすべての文字を一致させるsed
ことができます。[^\n]
echo "one
two" | sed 'N;s/[^\n]/_/g'
これは非常に便利ですが、POSIXに違反します。他のバージョンsed
に対する正解__n______
タブと同じですが、実際のタブ(前にctrl-v)を使用して解決できました。しかし、これは改行文字では機能しません。
echo "one
two" | sed 'N;s/[^
]/_/g'
私にしてくださいunbalanced brackets
。
[^[:cntrl:]]
一致させたい他の制御文字がない場合にのみ使用してください。
それでは、POSIXで改行を除くすべての文字を一致させる正しい方法は何ですかsed
?
ベストアンサー1
ご質問を正確に理解していない可能性がありますが、ご回答いたします。
改行を除くすべての文字を一致させるには、単純な正規表現ポイントが.
正確に対応することを行います。改行文字を除くすべての文字と一致します。
Gnuではなくsedで試してみましょう。
$ cat file5
home
help
variables
compatibility
$ sed 's/./_/g' file5
____
____
_________
_____________
$ echo "one
two
three
four" |sed 's/./_/g'
___
___
_____
____
しかし、最初のsedの例は次のとおりです。
echo "one
two" | sed 'N;s/\n/_/g'
すべての新しい行ではなく、次の新しい行にのみ一致します。
$ echo "one
> two
> three
> four" |sed 'N;s/\n/_/g'
one_two
three_four