問題タブ [nawk]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
2424 参照

shell - レコードを分離して csv として保存する awk コマンド

こんにちは、実際に次のような内容のテキスト ファイルをいじる awk スクリプトを管理しようとしました。

などなど..実際には巨大なファイル..そして私がなんとか書いたスクリプトは

このコマンドは、テキスト ファイルをレコード区切りの csv ファイルに変換します..しかし、上記のように、上記の例のアドレスの長さはさまざまであり、不規則な形式の csv ファイルを取得しています..

だから私が今したいのは、コマンドを変更して、1.会社のタイトルを1つのセルに入れ、2.説明部分が1つのセルに存在する場合は、存在しない場合はセルを空のままにし、3. 1 つのセルに住所部分 4. 1 つのセルに電話番号 5. 1 つのセルに Web サイト.. 特定のコンポーネントが存在しない場合、そのセルは空のままにする必要があります..

私はLinuxが初めてで、何かを処理しようとしていますが、シェルとawkもかなり新しいです..そうする可能性がある場合は、誰かが私を助けてくれます...

0 投票する
3 に答える
2388 参照

perl - sed、awk、perl で行から特定のパターンを抽出する

sed特定のパターンに囲まれたパターンが行内に存在する場合、そのパターンを抽出したい場合に使用できますか?

次の行を含むファイルがあるとします。

近所の人に言われることを[/恐れて/]恐れて、自殺を敢えてしない人がたくさんいます。

/*アドバイスは、すでに答えを知っている*/が知りたくない場合に求めるものです。

どちらの場合も、最初に発生するパターン、つまりそれぞれのケースで' [ /' または ' 'の行をスキャンし、次のパターンを保存して、それまでパターンを終了する必要があります。つまり、それぞれ ' ]' または ' ' です。/*/*/

要するに, 必要ですfear.answer可能であれば, 複数の行に拡張できますか? ある意味で, 出口パターンが同じ行とは異なる行で発生した場合.

提案やアルゴリズムの形でのあらゆる種類のヘルプを歓迎します。返信ありがとうございます

0 投票する
2 に答える
133 参照

perl - Extract the part enclosed by a predefined multiline character sequence

Hope the AWK gurus can provide a solution to my problem .

I have a file that goes like this :

I have to use AWK to extract the pattern between the first occuring c and a d .Starting from the first c a count should be kept on the number of c's and d's such that when the count matches , the part between the first c and the matched d shoud be ouput to a file including the number of the line in which the match for d occured .

In this particular example the match occurs on the seventh dog , therefore the output will have to be :

The match can go beyond just two lines ! The output can or cannot be inclusive of the c and the d .There exists all kinds of characters inclusive of the special ones in the text ! In order for the print to occur the count has to be matched .

Thanks in advance for the replies. Suggestions are always welcome .

EDIT : The capture of the pattern between c and d can be compromised as long as the condition is met and the line number of the exit d is obtained :)

0 投票する
2 に答える
1930 参照

perl - perlまたはawkへのgrep正規表現

私はLinuxenvを使用していて、最近solarisに移行しました。残念ながら、私のbashスクリプトの1つではgrepPスイッチ[pcre support]を使用する必要があります。Solarisはgrepのオプションをサポートしていないため、問題の別の解決策を見つける必要があります。明らかな pcreループバグがあるようで、オプションはサポートされていません。 !ソラリスの問題を使用するか、解決することを願っています。pcregrepsed -rperlnawk

私はまだperlスクリプトで使用しておらず、その構文もフラグも認識していません。

ですのでpcreperlスクリプターがほんの数分で私を助けてくれると信じています。それらは複数の行で一致する必要があります。

awk 効率の観点から、または解決策のどちらがより良い解決perl策でしょうか?

返信ありがとうございます。

0 投票する
3 に答える
178 参照

unix - ディレクトリ内のすべてのファイルにリダイレクト

awk を使用して、データをディレクトリ内のすべてのファイルにリダイレクトするにはどうすればよいですか?

のように、file.txtにリダイレクトしたいとしましょう:

ディレクトリ内の複数のファイル(実際にはすべてのファイル)に対して同じことを達成するにはどうすればよいですか。cirrent ディレクトリにいくつかの .txt ファイルがあります。そのため、abc を現在のディレクトリ内の拡張子が .txt のすべてのファイルにリダイレクトしたいと考えています。

0 投票する
1 に答える
272 参照

awk - 基準に基づくファイルの分割

以下のデータを含むファイルがあります

このファイルを設定値に基づいて2つ(bag1.txtとbag2.txt)に分割したいと思います。

bag1.txtは次のようになります:

bag2.txtは次のようになります:

.domain行は 両方のファイルに共通です。

以下のコマンドを試しましたが、機能しません。

0 投票する
1 に答える
261 参照

sed - 分音記号を見つけて置き換える方法は?

いくつかの分音符号を含むファイルがあります̈\textdiaeresisTeX で使用するには、それらを , に置き換える必要があります。

他の記号で動作するように見える通常のコマンドでは、常に出力が\\textdiaeresisor\ extdiaeresisになり、\t後者は「タブ」を意味すると解釈されます。

sedこれらのコマンドを試しました:

nawkこれらのコマンドを試しました:

分音記号をこの TeX コードに置き換えるにはどうすればよいですか?

0 投票する
5 に答える
696 参照

perl - 6回以上繰り返されたファイルから行を印刷する方法

以下に示すデータを含むファイルがあります。最初のコンマ区切りフィールドは何度でも繰り返すことができ、このフィールドの任意の値を6回繰り返した後の行のみを印刷したい

たとえば1111111、最初のフィールドとして8つのフィールドがあり、これらのレコードの7番目と8番目だけを印刷したい

入力ファイル:

出力:

私が試したのは、1番目に対して2番目と3番目のフィールドをトランスポートして、またはnawkのフィールドで使用できるようにすることです。$7$8

0 投票する
1 に答える
186 参照

linux - 同じファイル内の別の列の値に基づいて、その場でファイルを編集する(列の値を置き換える)

同じファイル内の別の列の値に基づいて、その場でファイルを編集(列の値に置き換え)したい。置換後に出力を別のファイルにリダイレクトしたくはありませんが、ファイルをその場で編集したいと思います。特にこれが必要なのは、編集が必要なファイルは、どのプログラムからも同時にアクセスされることはなく、インプレース編集が必要だからです。

以下のコードを試してみました。しかし、これも入力ファイルに1行ずつ書き込んでいます

私のサンプルレコードは以下のとおりです。ここでこれをインライン編集したいと思います。フィールド8がROBERTの場合、フィールド7でJAMESをFUDIKに置き換えます。

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

0 投票する
1 に答える
708 参照

perl - sed/perl で特殊文字を置換する際にエラーが発生する

エラーが発生している sed/perl を使用して、いくつかの特殊文字を置き換えようとしています。

以下のコマンドでは、SEARCHFIELDAPP、OLD_STRING、NEW_STRING などの値を置き換えようとしています。

上記のコマンドをコンソールに出力すると、以下のようになります。

上記のコマンド文字列では、いくつかの文字列を置き換えようとしています:

これを行うと、以下に示すような出力が得られます。

ここでの問題は、置換 s|NEW_STRING|mogga&*%^$|; にあります。. NEW_STRINGがmogga&*%^$に置き換えられることを期待していましたが、 moggaNEW_STRING*%^$ に置き換えられています。

ここで&はNEW_STRING として解釈されます。&をエスケープすると、正常に動作します。しかし、子スクリプトで動的に使用する親スクリプトからこの文字列を取得します。文字をエスケープせずに、文字列をそのまま正常に置き換える方法を探しています。エスケープすると、避けたいエスケープ文字で着信文字列を変更する必要があります。

置換に perl one liner を使用して同じことを試しました。しかし、ここでも特殊文字で同様の問題に直面しています。

置換後の外観は次のとおりです。

文字列mogga_dev_$%^に置き換えられるはずだった文字列 OLD_STRING がmogga_dev_0 ^置き換えられました。ここで$%は0に変換されています

この場合も、問題のある文字をエスケープすることで期待どおりの結果が得られます。

特殊文字をエスケープする以外に、この解釈を回避する方法を教えてください。

ありがとう


ウィリアムの入力の後、私はエラーなしで以下を達成することができました:

しかし、置換のためにファイルでこれを実行すると。ファイル内で文字列mogga_dev_!$%^がmogga!& %^$@ &^%に置き換えられていません。

特殊文字はエスケープされないので、置換は起きていないと思います。しかし、特殊文字をエスケープするためにエスケープを使用したくありません。ファイル内の文字列を特殊文字に置き換える他の方法を教えてください。

ありがとう