同じファイルの残りの部分の各行の前にファイルの最初の行を追加します。

同じファイルの残りの部分の各行の前にファイルの最初の行を追加します。

ファイルの最初の行を取得し、残りの行の先頭に入れたいです。たとえば、どのように変換しますか?

black
widow
card
Friday
berry

これに入りますか? :

black: widow
black: card
black: Friday
black: berry

追加のファイルと変数を明示的に生成せずにこれを実行できますか?

答え1

簡単なコマンドでawkこれを行うことができます。

awk 'NR == 1 {a=$0;next} { printf("%s: %s\n",a,$0)}' file_name

答え2

これではないかもしれません。最高sedでこれを行う方法はありますが、次のようになります。

$ sed '1{h;d;}; G; s/\(.*\)\n\(.*\)/\2: \1/' file
black: widow
black: card
black: Friday
black: berry

説明する:

  • 1{h;d;}最初の行はパターンスペースをコピーしてスペースを保存してから削除します。
  • Gパターンスペースの内容に改行文字を追加し、予約済みスペースの内容をパターンスペースの内容に追加します。パターンスペースに正しい2つの単語がありますが、順序が間違っていて、区切り文字(\n代わりに:)が間違っています。
  • s/\(.*\)\n\(.*\)/\2: \1/'改行文字の前後の部分を変更し、改行文字をコロンと空白に置き換えます。

関連情報