この記事では、ヘッダー レコードまたはトレーラー レコードをファイルに追加するさまざまな方法について説明します。
ファイル file1 を考えてみましょう。
$ cat file1 apple orange grapes banana
ファイルの先頭 (ヘッダー) に行を追加する
1. sed を使用してヘッダー レコードを追加するには:
$ sed '1i some text at the beginning' file1 some text at the beginning apple orange grapes banana
sed の「1i」には、ファイルの最初の行 (1) の前にのみ、先頭にテキストが含まれる行が含まれます。上記のコマンドは、ファイルを更新せずに、ヘッダーとともにファイルの内容を表示します。元のファイル自体を更新するには、以下に示すように sed の -i オプションを使用します:
$ sed -i.bkp '1i some text at the beginning' file1
-i.bkp オプションは、元のファイルに変更を加える前に、file1.bkp という名前のバックアップ ファイルを作成します。拡張子 .bkp は自由に選択できます。
2. この sed の例を使用してヘッダー行を挿入することもできます:
$ sed '1s/^/some text at the beginning\n/' file1
「1」は、「s」コマンドで置換を行うときにのみ一致する行番号を示します。 「^」記号は行頭を示します。最後に追加されたキャリッジ リターン ‘\n’ にも注意してください。これは、置換後に新しい行を印刷するのに役立ちます.
3. cat コマンドを bash printf ステートメントと共に使用して、ファイルの先頭に行を追加することもできます。
$ printf '%b' 'some text at the beginning\n' | cat - file1
4. awk を使用してヘッダー レコードをファイルに追加するには:
$ awk 'BEGIN{print "some text at the beginning"}1' file1 some text at the beginning apple orange grapes banana
BEGIN awk のステートメントは、ファイルを処理する前に出力されるテキストを最初に作成するため、出力にヘッダーが表示されます。 1 は、ファイルのすべての行を印刷することを示します。
ファイルの最後に行を追加する (トレーラー)
1. ここでのコマンドの中で最も簡単なのは、リダイレクトを使用してファイルの最後に行を追加することです。例:
$ echo "some text at the end" >> file1
2. sed を使用してトレーラー レコードをファイルに追加するには:
$ sed '$a some text at the end' file1 apple orange grapes banana some text at the end
$a ファイルの最後の行 ($) の後にのみ、末尾にテキストを追加 (a) する sed を作成します。
3. awk を使用してトレーラー レコードをファイルに追加するには:
$ awk '1;END{print "some text at the end"}' file apple orange grapes banana some text at the end
終わり label は、ファイルが処理された後にのみ印刷する print ステートメントを作成します。 1はすべての行を印刷することです。 1 は実際には true を意味します。
MAC OSX 上の sed
sed は、GNU sed と比較して、MAC OS での動作がほとんど異なります。 MAC でファイルにヘッダー行を追加するには、以下の sed の例を試すことができます。
$ sed -i '.bak' '1s/^/some text at the beginning\'$'\n/g' file1