これは私の入力ファイルinput.gzです。* NN * NNNNNNNNNNは完全にランダムで不明です。それは0から9の値を有する。一連の数値を参照して文字列を解析する - シェルスクリプト
最後の列の文字列は、次の行に拡張されている。これは単なる例です。文字列は他の行の次の行にも拡張されます。
yyyy-mm-dd hh:mm:ss string *NN*NNNNNNNNNN [AAAAA some random text
zzzzzzzzzzzz xxxxxxxx yy]
のは例を見てみましょう:
yyyy-mm-dd hh:mm:ss string *18*6666666666 [AAAAA]
yyyy-mm-dd hh:mm:ss string *11*2222222222 [AAAAA]
yyyy-mm-dd hh:mm:ss string *18*6666666666 [AAAAA]
yyyy-mm-dd hh:mm:ss string *11*2222222222 [AAAAA]
yyyy-mm-dd hh:mm:ss string *11*2222222222 [AAAAA]
yyyy-mm-dd hh:mm:ss string *15*9999999999 [AAAAA]
yyyy-mm-dd hh:mm:ss string *11*2222222222 [AAAAA]
yyyy-mm-dd hh:mm:ss string *11*2222222222 [AAAAA some random text
zzzzzzzzzzzz xxxxxxxx yy]
yyyy-mm-dd hh:mm:ss string *13*7777777777 [AAAAA]
yyyy-mm-dd hh:mm:ss string *19*5555555555 [AAAAA]
yyyy-mm-dd hh:mm:ss string *10*4444444444 [AAAAA]
私はより良い理解のために同じ番号としてすべてのNNNNNNNNNNを取りました。
文字列AAAAAを持つuniq NNNNNNNNNNのみを表示するSEDまたはAWKまたはGREPを使用するスクリプトが必要です。最後のcoloumnには他の文字列もあります。しかし、それは最初の行または次の行にAAAAAを持たなければなりません。
yyyy-mm-ddやhh:mm:ssなどの他のすべての制約は無視してください。考慮すべき唯一の制約は、ある* NN * NNNNNNNNNNとAAAAA
の予想される出力は次のようになります。8行目の最後の列があまりにも次の行に拡張されたよう
*11*2222222222
*10*4444444444
*19*5555555555
*18*6666666666
*13*7777777777
*15*9999999999
、私が使用して推測しますAWKは除外されていますか?
このようにスクリプトを正しく実装するにはどうすればよいですか?
grep "\[AAAA"|sed -n '/\*[0-9]*\*[0-9]*/p'
(これが間違っている場合は、他の方法があまりにも結構です)* NN * NNNNNNNNNNはグレップを使用するか、sedの間、私たちは参照用に任意の値を取ることができない完全にランダムであることを覚えておいてください。
'string'はすべての行で一定の長さですか?また、ラップアラウンドは実際に改行されていますか、それともあなたの端末にそのように表示されますか? –
問題の明確な定義ですが、コードを投稿するのを忘れました。 StackOverflowは、人々がコードを修正する手助けをしています。無料のコーディングサービスではありません。どのコードもコードなしより優れています。 RS値として ']'を使い、 'awk'出力を' sort -u'( 'man sort')にパイプすることを考えてください。がんばろう。 – shellter
@AustinHastingsはい。ストリングusを定数として示す列。実際には複数の列があります。私はちょうど良い理解のためにいくつか投稿した。あなたがAAAAAについて話しているなら、それは一定ではありません。しかし、一連の文字列にはAAAAAが必要です。そして、それは私が推測する新しいラインです(私はワイドスクリーンモニタで端末を拡張し、まだ新しいラインで表示しています)。申し訳ありませんが、私はまだスクリプトの段階を学んでいます。それが新しい行であるかどうかを他の方法で調べる方法はわかりません。 – intruder