通常ならば
sed -i '行数d' ファイル名
だと思いますが、行数が変数(例えばA=10)の場合はどのように記述するのでしょうか。
sed の代わりに、ラインエディタの ed を使うと、入力ファイルをそのまま上書きできます。
#!/bin/sh echo -e "$1d\\nw" | ed - $2
何行目を削除するか、と、入力ファイル名をコマンドラインから受け取るようにしました。上記スクリプトを test.sh というファイル名にして実行権を与えれば、
./test.sh 10 inputfile
で、inputfile という名前の 10 行目を削除して上書きします。
こんな感じです。
#! /usr/bin/sh input_file=... output_file=... delete_line=10 # 削除対象の行 sed -e "${delete_line}d" $input_file > $output_file mv $output_file $input_file
ご回答ありがとうございます。
ドルマークを抜いたdelete_lineだけを括弧でくくるのですね!
変数の展開は、中括弧でくくらなくても解釈できることは多いのですが、
中括弧でくくる癖をつけておくと、変なことで悩まなくて済みます。
sed の代わりに、ラインエディタの ed を使うと、入力ファイルをそのまま上書きできます。
#!/bin/sh echo -e "$1d\\nw" | ed - $2
何行目を削除するか、と、入力ファイル名をコマンドラインから受け取るようにしました。上記スクリプトを test.sh というファイル名にして実行権を与えれば、
./test.sh 10 inputfile
で、inputfile という名前の 10 行目を削除して上書きします。
回答ありがとうございます。
入力ファイルをそのまま上書きできる点がいいですね!
回答ありがとうございます。
2012/02/13 00:10:01入力ファイルをそのまま上書きできる点がいいですね!