基本的に私が持っているのは、数字の行を含むテキストファイル(file.txt)です(行は必ずしも同じ長さではありません)。
1 2 3 4
5 6 7 8
9 10 11 12 13
私がする必要があるのは、これらの番号を一度に 1 つずつ削除して新しいファイルを書き込み、置換を行うことです。たとえば、最初の新しいファイルには次のものが含まれます。
2 3 4 <--- 最初の要素を削除
5 6 7 8
9 10 11 12 13
7番目のファイルには次が含まれます
1 2 3 4
5 6 8 <--- ここで 7 番目の要素を削除
9 10 11 12 13
これらを生成するために、各行をループしてから、各行の各要素をループしています。たとえば、2 行目の 3 番目の要素を削除する 7 番目のファイルの場合、行を読み込んで適切な要素を削除し、この新しい行を再挿入することでこれを実行しようとしています。
$lineNo は 2 (2 行目)
$line は 5 6 7 8
を切り取り、3 番目の数字を削除して $newline 5 6 8 にします
次に、sed を使用して file.txt の $lineNo 行を $newline に置き換えようとします:
sed -n '$lineNo s/.*/'$newline'/' > file.txt
これはまったく機能していません。
sed: can't read 25.780000: No such file or directory (25.780000 はテキスト ファイル内の数字です。ファイルなどを読み取るために
$newline を使用しようとしているようです)
というエラー
が表示されます。
どの行を置き換えるかを指定しても機能しません:(
私の質問は、a) sed ではなくこれを行うためのより良い方法はありますか、b) sed が進むべき道である場合、私は何を間違っていますか?
ありがとう!!