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