ファイルの最初の行を取得し、残りの行の先頭に入れたいです。たとえば、どのように変換しますか?
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/'
改行文字の前後の部分を変更し、改行文字をコロンと空白に置き換えます。