0

これについて本当に助けていただければ幸いです。

sed を使用して CSV ファイルを作成しています。基本的に、複数の html ファイルはすべて 1 つの html ファイルにマージされ、sed を使用して不要な画像などをすべて削除し、生の列データを取得します。

私はこれをすべて機能させていますが、最後のビットで立ち往生しています。

私がやりたいことは非常に基本的なものです - 次の行を置き換えたいです:

"a variable string"
"end td"
"begin td"

1行で:

"a variable string" 

(この行の最後にタブ文字がある)

私はDOSを使用しています。

ご覧のとおり、私はこれらすべてに慣れていません。これを機能させることができれば、将来的に多くの時間を節約できるので、助けていただければ幸いです。現時点では、いくつかの html ヘッダーをテキスト ファイルに挿入し、html エディターで開き、テーブルを選択して、これをスプレッドシートに貼り付ける必要がありますが、これは少し面倒です。

PS特定の行から括弧「(」と「)」を削除するためにsedを取得する簡単な方法はありますか?

4

2 に答える 2

1

これがあなたが本当に望んでいることだとは思えませんが、それはあなたが求めたものです。

sed "s/\"a variable string\"/&\t/; s/\"end td\"//; s/\"begin td\"//" inputfile

おそらくやりたいことは、それらが連続して表示されたときにそれらを置き換えることです。これを行う方法は次のとおりです。

sed "1{N;N}; /\"a variable string\"\n\"end td\"\n\"begin td\"/ s/\n.*$/\t/;ta;bb;:a;N;N;:b;$!P;N;D" inputfile

これにより、ファイル内のすべての括弧が削除されます。

sed "s/[()]//g" inputfile

特定の行を選択するには、次のようにします。

sed "/foo/ s/[()]//g" inputfile

「foo」という単語が行のどこかにある場合にのみ置換を行います。

編集: GNUWin32 と CMD.EXE に対応するために、一重引用符を二重引用符に変更しました。

于 2010-09-17T01:30:57.773 に答える
0

以前に残したコメントが保存されていないようです - 再試行します

( と ) を削除するコードは完全に機能しました

そうです-3行を1行にマージしようとしていたので、次の2行をパターンスペースに読み込むように見える2番目の例は、より有望に見えます。しかし、出力は私が期待していたものではありませんでした。

私は今、コードがより複雑になる必要があることに気付きました.htmlコードをテキストファイルに挿入し、Openofficeで開いてスプレッドシートにのみ貼り付ける手動の方法として、これ以上あなたを悩ませたくありません.数秒かかり、sedコーディングを手動で作成するのは悪夢になると感じています。

基本的に、html を変換するためのルールは次のようにする必要があります。

1) 次の行で < tr > の後に < td > が続く場合、 < tr > と < td > の行を完全に削除し [つまり、キャリッジ リターンを出力しません]、次の行でその行の先頭に " を貼り付けます。 [この行の末尾の改行は後で編集するので問題ありません]

2) < /td > の後に < td > が続く場合、これらの 2 行を完全に削除し [これらの行の後にキャリッジ リターンを出力しません]、前の行で ", [キャリッジ リターンを出力しません] を出力します。次の行は行の先頭に貼り付けます [末尾のキャリッジ リターンは後で編集するので心配しないでください]

3) < /td > の後に < /tr > が続く場合は、これらの行を両方とも削除し、前の行に行末に " at と最後の改行を追加します。

入力と目的の出力がどのようなものになるかの例を示しました。

入力: http://medinfo.redirectme.net/input.txt

[必要なファイルは次のメッセージに投稿されます - この掲示板では、新しいユーザーが複数のハイパーリンクを含むメッセージを投稿することはできません!]

アドレス列が入力ファイルの複数の行にあるという追加の問題があります。これは、次の行の最初の文字が " であるかどうかを確認することで、1 行に減らすことができます。現在の行の最後にあるキャリッジ リターン

ふぅ、実際にコードを入力するだけでも悪夢でした。しかし、ここまで来るのにあなたの助けをありがとう!:-)

于 2010-09-20T09:31:16.817 に答える