特定の行の一部を印刷する
ファイルを読み、次を含むすべての行を印刷したいと思います。 ## DF
ファイルを読み、次を含むすべての行を印刷したいと思います。 ## DF
私は初めてgroffに触れたので、これが愚かな質問なら許してください。コンテンツ列2つと脚注列1つを使用するのに適したソリューションが見つかりませんでした。目的の結果を得るためにマクロを試して.1Cみ.2Cましたが、役に立ちませんでした。他の内容に関係なく、1列に脚注を入れるのに最適な方法はありますか?
私はそれを使用しています grep 'name=>' log.txt | cut -d\ -f3 私は次のような結果を得ます。 name=>"Faya-Largeau", name=>"Paris", name=>"Madrid", name は変数の出力です。 (私はこのような都市の長いリストを持っています) 「Faya-Largeau」、「Paris」、または「Madrid」のみをインポートしたいので、名前=>と後の括弧の間にある都市を除外する必要があります。 どうすればいいですか? 事前にありがとう
閉鎖。この質問には詳細または明確性。現時点では回答は許可されていません。 この質問を改善したいですか?詳細を追加して質問を明確にしてください。この記事を編集してください。 閉鎖2年前。 この問題を改善する 列のデータにはならないデータがbあります。CR+LF次のようになります。 a,b,c test1,test2 test2 bis, test3 しかし、次のようにする必要があります。 a,b,c test1,test2 test2 bis,test3 どのように使用またはsed削除できますかawk?
awk †は""のn番目の反復を見つけて、次の" {"文字まで}すべてを返すことはできますか? [編集:はい... Ed Mortonのソリューションは一番下にあります。] †私はいつもawkがその仕事に適したツールだと思いました。他のアイデアも大歓迎です。 何百ものファイルからテキストブロックを分離する必要があります。一部のファイルにはブロックが1つしかありませんが、他のファイルには何十ものファイルが含まれています。 サンプル: $ cat samp2.txt ////////////////////////////////// // North Carolina office // satellite branch ////////////////////////////////// { first "John" last "Doe" address "163 Main Street" age "25" gender "male" } >現在のチャンクを一時ファイルに入れて、スクリプトが次のチャンクを処理する前にそれを操作できるようにすることをお勧めします。それにもかかわらず、それらは別々のファイルで終了します。 私はn番目の一致を見つけるためにawkにインデックスを提供することが可能だと思います。 Bashスクリプトはループと反復を管理できます。 私は近い $ awk '/\{/{flag=1;next}/\}/{flag=0}flag' samp2.txt first "John" last "Doe" address "163 Main Street" age "25" gender "male" ただし、上記の操作はファイル全体に対して実行されるため、複数のブロックを含むファイル(以下のような)では機能しません。ファイルにいくつのブロックがあるかに関係なく各ブロックは分離されています。別途処理する必要があります。 一部のファイルにはコメントが含まれていますが、多くのファイルにはコメントが含まれていません。標準はありません。私はそれらを破棄しましたが、矛盾のためにそのコメントを使用して私たちの場所を追跡することはできませんでした。与えられた唯一のものは中括弧(および行区切り文字)です。 テキストは常に改行で区切られますが、ブロック間に常に空白行があるわけではありません。データのペアはさまざまなので、これは単純なgrep 5 lines and proceed解決策ではありません。 $ cat samp3.txt //GROUP1 { first "John" address "124 Main Street" last "Jones" special "supervisor" age "35" gender "male" } //The fourth group { first "John" address "125 Main Street" last "Jacob" age "30" gender "male" } { first "John" address "523 Main Street" last "Jingle" age "40" gender "male" } 上記のawkの説明は、すべてのグループを介して1つの大きな段落にマージされます。 $ awk '/\{/{flag=1;next}/\}/{flag=0}flag' samp3.txt first "John" address "124 Main Street" last "Jones" special "supervisor" age "35" gender "male" first "John" address "125 Main Street" last "Jacob" age "30" gender "male" first "John" address "523 Main Street" last "Jingle" age "40" gender "male" {次のようにawkにn番目の ""を見つけて、n番目の}""を個別にダンプするように指示する必要があります。 first "John" address "124 Main Street" last "Jones" special "supervisor" age "35" gender "male" (awk exits, bash script does its thing) first "John" address "125 Main Street" last "Jacob" age "30" gender "male" (awk exits, bash script does its thing) first "John" address "523 Main Street" last "Jingle" age "40" gender "male" (awk exits, bash script does its thing) [etc] 意図は、{ .+ }貪欲ではないn番目の正規表現の一致に似ています。 これでよりスマートなPerlソリューションがありますか? ティア。 このコードは私が必要とするものを取得します。 Ed Mortonの回答に基づいて修正されました。 awk -v n=$LoopVariable -v RS='}' 'NR==n{gsub(/.*\{\r?\n|\n$/,""); print}' $SourceFile 編集:入力は私が必要とする質問と質問を分離するのに本当に役立ちました。ありがとうございます。 見つけました。 一部 SEの問題それとても似ているようです。しかし、ここに私の解決策が含まれていれば、接続を見るのに十分なawkについて十分にはわかりません。
私はキーボードナビゲーションショートカットについて話しています。これはすべてのテキストボックス/エディタ/などで動作します...時には文字列の特定の位置に移動するより高速な方法が必要ですが、代わりにctrl +左側があるようです。文字列の間を移動する/右矢印、時には空白文字と英数字以外の文字を区切り文字として使用できますが、どちらも認識されません。これにより、長い文字列とテキストを編集するのに費用がかかります。点滅している行をジャンプするカスタムショートカット(5文字/戻る/前方など)も可能ではありませんか?
私のオリジナルテキストは 11 2 CDTZ - b00264ab 36 37 CDTB - c2330001 出力テキストを次のように表示したいと思います。 11 2 CDTZ - b0:02:64:ab 36 37 CDTB - c2:33:00:01 ハイフンの後に、文字列の2文字ごとにコロンを追加する必要があります。 次のような一般的なテキスト処理コマンドはありますか? ハイフンの前に含まれるすべての文字列は変更されていないままにしてください。 ハイフンの後に2文字ごとにコロンを挿入します。 通常、パターン(ここではハイフン)の前後のテキストを異なる方法で処理する必要があります。 これまでの私の努力: sed私はとの基本的な知識がありますawk。 sedでこれを行う方法がある場合は、awkフィールド-区切り文字で(ハイフン)を設定し、それをawk実行してから、行全体を印刷します。sed 's/../&:/g;s/:$//'$2print $0
テキストファイルの各行を調べて修正するためのawkスクリプトの作成に問題があります。 次の例を考えてみましょう。 $ cat employee.txt "100","Thomas","Sales","5000" "200","Jason","Technology","5500" "300","Mayla", "Technology","7000" "400","Nisha","Marketing","9500" "500","Randy","Techno logy","6000" "501","Ritu","Accounting","5400" ご覧のとおり、一部の線が間違った地点で壊れているようです。パターンは次のようにする必要があります。 $ cat employee.txt "100","Thomas","Sales","5000" "200","Jason","Technology","5500" "300","Mayla","Technology","7000" "400","Nisha","Marketing","9500" "500","Randy","Technology","6000" "501","Ritu","Accounting","5400" したがって、awkでパターンが従わないことを確認する方法があるかどうか疑問に思います。たとえば、各行のカンマ数を確認してから、改行をバックスペースとして指定する方法です。 こういう数百、数千行のファイルを受け取るので、壊れた行をいつも直す手作業がとても退屈だ。 SQLLDRを使用してテーブルにデータをロードするための制御ファイルを生成していますが、テキストファイルに改行が含まれているためエラーが発生します。だから私の解決策は、スクリプトを介して各行を変更することでした。 どんなアイデアがありますか?スクリプトがAwkにある必要はありません。
特定のテキストを使用して、現在の日付より後の特定の時間のログをフィルタリングしたいと思います。現在の日付を含むテキストのログを正常にフィルタリングしました。これはコマンドです: grep "$(date +"%d/%b/%Y")" test.log | grep -i "failed login" サンプルログは次のとおりです。 [04/Dec/2019 02:05:13 -0800] access WARNING 10.126.49.92 -anon- - "POST /hue/accounts/login HTTP/1.1"-- Failed login for user: testuser [04/Dec/2019 02:05:15 -0800] access WARNING 10.126.49.92 -anon- - "POST /hue/accounts/login HTTP/1.1"-- Failed login for user: testuser [04/Dec/2019 02:04:59 -0800] access INFO 10.126.49.92 ahmed.rao - "POST /notebook/api/check_status HTTP/1.1" returned in 759ms [04/Dec/2019 02:05:00 -0800] base INFO Selected cluster 0e83a448-26c9-459b-a0f2-3478ecb119af {u'interface': u'impala', u'namespace': u'0e83a448-26c9-459b-a0f2-3478ecb119af', u'type': u'direct', u'id': u'0e83a448-26c9-459b-a0f2-3478ecb119af', u'name': u'0e83a448-26c9-459b-a0f2-3478ecb119af'} interface hiveserver2 [04/Dec/2019 03:05:00 -0800] access INFO 10.126.49.92 ahmed.rao - "POST /notebook/api/close_statement HTTP/1.1" returned in 1345ms [04/Dec/2019 03:05:00 -0800] base INFO Selected cluster 0e83a448-26c9-459b-a0f2-3478ecb119af {u'interface': u'impala', u'namespace': u'0e83a448-26c9-459b-a0f2-3478ecb119af', u'type': u'direct', u'id': u'0e83a448-26c9-459b-a0f2-3478ecb119af', u'name': u'0e83a448-26c9-459b-a0f2-3478ecb119af'} interface hiveserver2 [04/Dec/2019 03:05:18 -0800] access WARNING 10.126.49.92 -anon- - "POST /hue/accounts/login HTTP/1.1"-- Failed login for user: testuser しかし、特定の時間よりも大きな条件を適用する方法がわかりません。
与えられたファイルの奇数行と偶数行の偶数と奇数の合計を提供するシェルスクリプトを作成したいと思います。 私は次を使いたいです: sed -n 2~2p そして sed -n 1~2p しかし、どこで、どのように解決を始めるべきかさえわかりません。私を正しい方向に案内してもらえますか? 入力ファイルの例: 20 15 14 17 20 50 79 77 55 40 89 77 45 65 87 12 出力例: Odd summ: 15+17+55+89+77=253(Enough just the end of the summ) Even summ: 20+50+12=82(Enough just the end of the summ)