sed を使用して、文字列の最初の文字を新しい行に囲みます。

sed を使用して、文字列の最初の文字を新しい行に囲みます。

文字列があると仮定すると、特に文字列に置き換えることなく、foobar 同様のものを簡単に生成できますか?[f]oobarf[f]

ユースケース:プロセス名へのユーザー入力を許可し、削除してプロセスの詳細を表示したいですgrep

答え1

する:

sed 's/^./[&]/'
  • ^.行の最初の文字と一致
  • 置換から一致まで&展開し、一致を束ねます。[]

例:

% sed 's/^./[&]/' <<<'foobar'
[f]oobar

答え2

Bashでのみサブストリング拡張を使用してください。

$ pat=foobar
$ echo "[${pat:0:1}]${pat:1}"
[f]oobar

答え3

v=foobar
echo "[${v%${v#?}}]${v#?}"
[f]oobar

関連情報