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