印刷されたレポートのデータを、別のシステムに移行するために使用できるフォームにインポートする必要があります。 1つの小さなパターンにこだわっているようです。次の行とともに、レポートの列128から始まる文字列.00を含む行をすべて削除しようとしています。テキストファイルの特定の列にsedの一致がありますか?
私は、次を使用しています:sed '/^\{128\}\.00/,+1 d'inputfile >outputfile
私は、FreeBSDを使用していると私は、REのエラーを取得しています:無効な繰り返しオペレータのオペランドを。私は次の行を削除するために+1を取り除いて実験すると同じエラーが出るので、もっと基本的なものがないと思います。
(私は確かに誰かが飛び込んで「あなたはawkを使うべきです...」と言っていますが、私はsedを使ってこれをやろうとする特定の理由があります。そして残念ながら、私はsed/awkの魔法使いだったので、私はちょうどそれらの両方で錆びています。)
ありがとうございました。 、ここでは行の折り返しにもかかわらず、最後の列は0.00である
1011-000 .00 .00 .00 .00 .00
Petty Cash-Shop
お知らせ:
この
は私が一致しようとしているテキストの2行の例です。私はvimで実験してカラム番号を得ました。私はsedコマンドを実行すると、これらの行の両方が消えることを期待しています。コマンドをsed '/\.\{128\}\.00/,+1 d'inputfile >outputfile
に変更しましたが、それらは消えません。 (「」。必要だったということをキャッチするためにしかし、おかげで私はもはやREのエラーを取得していない。)
あなたの '{128}'量限定子は '^'を変更します。意味はありません。代わりに '。{128}'を使用してください(または '。\ {128 \}')。 – Aaron
'\ {128 \}'の前には何もありません。 – 123
"列"をどのように区切っていますか?スペース、コンマ、タブ、その他何か?それとも、「キャラクターの位置」を意味するのですか?あなたのキーボードで "a"、 "w"、 "k"のキーが壊れていない限り、sedの使い方が悪いのは悪いことです。 sedは、個々の行に単純なサブプログラムを追加するためのものです。あなたはこれをやっていないので、これはsedの仕事ではありません。awkの仕事です。あなたのコンピュータは現在、sedを使ってこのようなことをすることができます。 –