単語の間にスペースがある場合、2番目の列にハイフンを入れるコマンド[閉じる]

単語の間にスペースがある場合、2番目の列にハイフンを入れるコマンド[閉じる]

test.txt次の名前のファイルがあるとします。

you wel come
how nice
what do ing

単語の間にスペースがある場合は、2番目の列にハイフンを追加するにはどうすればよいですか?

答え1

各行の 2 番目の空白文字を次に置き換えるには-:

$ sed 's/ /-/2' test.txt
you wel-come
how nice
what do-ing

最初の行を除くすべての行のすべての空白文字をGNUに置き換えるには、次のようにしますsed

sed 's/ /-/2g'

各sedに対して、次の操作を行います。

sed -e :1 -e 's/ /-/2;t1'

-各行の他のすべてのスペースを次に置き換えるには:

sed 's/\( [^ ]*\) /\1-/g'

答え2

readコマンドに2つの変数名を使用します。これは、最初の単語を最初の変数に入れ、他のすべての単語を2番目の変数に入れます。その後、bashパラメーター置換を使用してスペースをハイフンに置き換えることができます。

while read -r first rest; do
    echo "$first ${rest// /-}"
done < test.txt

になります。いいえスペースを折りたたみ、1行の単語の間に複数のスペースがある場合。

hello     there     big     world

以下の結果が出力されます。

hello there-----big-----world

ハイフンが1つだけ必要な場合は、単語をbash配列として読み取ることができます。

while read -ra words; do
    echo "${words[0]} $(IFS=-; echo "${words[*]:1}")"
done < test.txt

関連情報