概要
CLIでログデータを簡易的に処理する際、headerがなかったので該当のログデータにヘッダー行を挿入したかった。
結論
以下で可能。
複数ファイルがある場合のケースを記載。
#!/bin/bash IFS=$'\n' header=`cat ./header.txt` for file in *.log do sed -i 2i$header $file done
補足として...
IFS
はInput Field Separaterの略で、今回の例に限らず基本メトリクスデータは空白による行列分割を行っているので、
これを変更しないと処理中に分割して解釈されるので少し中止したいところ。
ハマりどころ
今回はsed -iによって、解決できたので問題とならなかったが (sed等の上書きモードが使用できない等の)場合によっては、以下のようにしたくなると思う。
#仮にsedに上書きモード(-iオプション)がなかったとして cat $filename | sed 2i $header > $filename
これについては結果対象のファイルは空となる。
理由は以下ブログで原因と対処法が記述されているので参考にされたい。