質問: スペースの後に単一の文字を取得するにはどうすればよいですか? どうすれば出力を下回ることができますか?最初のフィールドをそのままにして、スペースの後の1文字が必要です。echo "hello world" hellow 3番目のフィールドもある場合は、3番目のフィールドの最初の文字が出力に含まれている必要があります。echo "hello world unix" hellou
回答: sedあり:編集: glenn jackmann によって改善されました、ありがとう!$ 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 例として「helloworldunix」を使用した説明: s/次のパターンに置き換えます (\s+) 1番目のグループ、1つ以上の非スペース文字: "hello" .*中央部分、任意の文字:「世界」 \sスペース文字: "" (\s) 2番目のグループ、非スペース文字: "u" .*$最後までの任意の文字: "nix" /\1\2/ 1番目と2番目のグループに置き換えます: "hellou" bashあり:$ 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 例として「helloworldunix」を使用した説明: var_end=${var##* }一致するプレフィックスパターン、最長の一致を削除し、 "hello world"、結果: "unix" ${var%% *}一致するサフィックスパターン、最長の一致を削除し、 "world unix"、結果: "hello" ${var_end:0:1}最初の文字を取得: "u"