次のようにPythonを使用してこれをsed
行うawk
ことができますunix
。/u/n/i/x/
separator='/'
separator.join(string)+separator
しかし、シェルでこれをどのように達成できますか?
ベストアンサー1
$ echo unix | sed -e 's,.,&/,g' -e 's,^,/,'
/u/n/i/x/
これは次のようになります。予告の答えただし、両方の式をsed
実行して呼び出しを削除し、コマンドのsed
代替区切り文字としてコンマを使用して使用される正規表現を単純化しますs///
。
ここで使用される最初の置換は、入力文字列の各文字をそれ自体に置き換え、その後に1/
文字が続きます。 2番目の置換は/
文字列の先頭にaを挿入します。
コマンドsed
はに短縮できますsed 's,.,&/,g; s,^,/,'
。つまり、で区切られた両方の代替項目を含む単一の引数を使用します;
。
GNUを使用すると、sed
次のこともできます。
$ echo unix | sed 's,.\{0\},/,g'
/u/n/i/x/
正確に.\{0\}
ゼロ文字と一致します。 GNUは、sed
この式が文字列内のすべての文字間で一致するようにします。他のsed
実装ではこれをエラーと見なすことができます。ここでは、OpenBSD sed
:
$ echo unix | sed 's,.\{0\},/,g'
sed: 1: "s,.\{0\},/,g": RE error: empty (sub)expression