スペースの後に単一の文字を取得する方法は?

スペースの後に単一の文字を取得する方法は?

以下の出力をどのように取得できますか?最初のフィールドをそのままにして、スペースの後に文字を追加したいと思います。

echo "Hello world"
Hellow

3番目のフィールドもある場合は、3番目のフィールドの先頭文字が出力に表示されます。

echo "hello world unix"
hellou

ベストアンサー1

sedを使用してください:

編集する:で改善されましたグレンジャックマン、ありがとうございます!

$ echo "Hello world" | sed -E 's/(\S+).*\s(\S).*$/\1\2/'
Hellow
$ echo "hello world unix" | sed -E 's/(\S+).*\s(\S).*$/\1\2/'
hellou

「hello world unix」を例に挙げましょう。

  • s/次のパターンを交換してください
  • (\S+)最初のグループ、1つ以上の空白以外の文字: "hello"
  • .*中間部分、すべての文字: "world"
  • \s空白文字: ""
  • (\S)2番目のグループ、空白以外の文字: "u"
  • .*$最後までのすべての文字: "nix"
  • /\1\2/最初と2番目のグループ「hello」に置き換えます。

バッシュ使用:

$ var="Hello world"
$ var_end=${var##* };echo ${var%% *}${var_end:0:1}
Hellow

$ var="hello world unix"
$ var_end=${var##* };echo ${var%% *}${var_end:0:1}
hellou

「hello world unix」を例に挙げましょう。

  • var_end=${var##* }一致するプレフィックスパターンの削除、最長一致、
    「hello world」、結果:「unix」
  • ${var%% *}一致するサフィックスパターンの削除、最長一致、
    「world unix」、結果:「hello」
  • ${var_end:0:1}最初の文字のインポート: "u"

おすすめ記事