タグ付けされた質問 「awk」

パターン指向のスキャンおよび処理言語。

3
タブ区切りファイルに値の列を追加する
特定の行数を持つファイルに値の列を追加するにはどうすればよいですか。次のような入力ファイルがあります。 入力ファイル: SPATA17 1 217947738 LYPLAL1 1 219383905 FAM47E 4 77192838 SHROOM3 4 77660162 SHROOM3 4 77660731 SHROOM3 4 77662248 出力ファイル: SPATA17 1 217947738 file1 LYPLAL1 1 219383905 file1 FAM47E 4 77192838 file1 SHROOM3 4 77660162 file1 SHROOM3 4 77660731 file1 SHROOM3 4 77662248 file1 この場合、ファイルの行数まで値の列を追加します。「file1」などの値は一貫したままです。 その理由は、これらのファイルが100個あるためです。各ファイルを開いて列を貼り付けたくありません。ディレクトリに移動して値の列を追加することで、これを自動化する方法もあります。値はファイル名に由来し、ファイルの各行の最後/最初の列に追加する必要があります。

1
フィールドの値が3以下の行を削除します-sedまたはawk?
8番目のフィールド(列)の値が2以下のすべての行を削除する必要があります。 私のデータは次のようになります。 12-31 Airport 189 379 41 49.70946503 -124.91377258 2 2880 30.8 01-01 AlberniElementary 165 331 16 49.26100922 -124.80662537 4 5760 26.1 01-09 BamfieldMarine 161 323 23 48.83490372 -125.13572693 2 2875 27.4 01-10 BamfieldMarine 161 323 23 48.83490372 -125.13572693 3 3068 38.6 awkを使用すると、必要な値を取り除いて別のファイルに出力できること、そしてsedが現在のファイルを編集することを理解しています。どちらの場合でも、元のファイルを保持する必要があります。 注:ソリューションについて詳細な説明を提供してください。コマンドを記述するだけでは不十分です。提案に注釈を付けてください。 さらに注意:データにはヘッダー行があるため、ほとんどの場合、ソリューションには次のことが必要です。 awk 'FNR> 1' 私は考えます?
17 shell  shell-script  sed  awk  grep 

7
各行を複数回繰り返します
ファイル内の各行を一定回数繰り返したいと思います。 たとえば、各行を4回繰り返します。 a b c になる: a a a a b b b b c c c c 私はいくつかの検索を行いましたが、逆の行に沿って多くの質問と回答があります。たとえば、重複する行を単一の行にマージしたり、再度印刷して行を2倍にしたりします。 Cでこれを行うのは簡単ですが、ネイティブコマンドについてもっと詳しく知りたいので、このような1回限りのスローアウェイにいつも頼る必要はありません。

3
bashで正確に2つの有効数字で浮動小数点数をフォーマットする方法は?
浮動小数点数をbashで正確に2桁の有効数字で出力したい(おそらくawk、bc、dc、perlなどの一般的なツールを使用して)。 例: 76543は76000として印刷する必要があります 0.0076543は0.0076として印刷する必要があります どちらの場合も、有効数字は7と6です。次のような同様の問題に対するいくつかの回答を読みました。 シェルで浮動小数点数を丸める方法は? 浮動小数点変数のbash制限精度 しかし、答えは、有効桁数の代わりに小数点以下の桁数を制限することに焦点を当てています(例:でのbcコマンドscale=2またはでのprintfコマンド%.2f)。 数字を正確に2桁の有効数字でフォーマットする簡単な方法はありますか、それとも独自の関数を作成する必要がありますか?
17 bash  awk  bc  floating-point  dc 

5
grepとawkの使用
特定のパターンをキャプチャするには、awkおよびgrep使用することができます。なぜ私たちは一方をもう一方の上に使うべきですか?どちらが速いですか、そしてなぜですか? ログファイルがあり、特定のパターンを取得したい場合、次のいずれかを実行できます。 awk '/pattern/' /var/log/messages または grep 'pattern' /var/log/messages ベンチマークを行っていないので、知りません。誰かがこれを詳しく説明できますか?これら2つのツールの内部動作を知ることは素晴らしいことです。
17 linux  awk  grep  performance 

3
ファイル内の複数行の文字列を置換
ある複数行の文字列を別の複数行の文字列で置き換えることにより、更新したいファイルがいくつかあります。以下の線に沿ったもの: * Some text, * something else * another thing そして、私はそれを次のものに置き換えたいです: * This is completely * different text 結果は、置換後、テキストの最初のブロックを含むファイルに2番目の文字列が含まれるようになります(ファイルの残りの部分は変更されません)。 問題の一部は、ファイルシステムで更新するファイルのリストを見つける必要があることです。私はそのためにgrepを使用することができます(複数行の文字列を使用するのは簡単ではありませんが)sedでパイプすることができますか? これを行う簡単な方法はありますか?Sedはオプションですが、\ nなどを追加する必要があるため厄介です。「このファイルから入力を取得し、それらのファイルで一致させてから、この他のファイルのコンテンツで置き換える」と言う方法はありますか?必要に応じてpythonを使用できますが、すばやく簡単なものが必要なので、利用可能なユーティリティがある場合は、独自のスクリプト(方法を知っています)を作成するよりもむしろそれを使用します。

2
条件付きブロックと条件付きステートメント(if)
ファイルがあるとします: PRO 1 GLN 5.55112e-17 ILE -6.245e-17 THR 5.55112e-17 2番目の列の番号が1でないすべての行を0に変更し、残りを保持するようにします。 私が使用する場合if(つまり、条件付きステートメント)、すべてがOKです: awk '{if($2!=1){print $1,"0"}else{print $0}}' file PRO 1 GLN 0 ILE 0 THR 0 しかし、条件ブロックを使用すると、望ましくないことが起こります。 awk '$2!=1 {print $1,"0"} {print $0}' file PRO 1 GLN 0 GLN 5.55112e-17 ILE 0 ILE -6.245e-17 THR 0 THR 5.55112e-17 何がおかしいのかわかります。 このエラーを修正するにはどうすればよいですか? なぜこのエラーが発生するのですか? 条件付きステートメントと条件付きブロックの違いは何ですか?
17 awk 

3
awk:戻りステータスを強制しますか?
これは私の以前の質問のフォローアップです。 この便利なスニペットを使用して、/ etc / passwdのフィールド数を検証しています。次の例では、ユーザー「fieldcount1」と「fieldcount2」のフィールド数が間違っています。 $ awk -F: ' NF!=7 {print}' /etc/passwd fieldcount1:x:1000:100:fieldcount1:/home/fieldcount1:/bin/bash:::: fieldcount2:blah::blah:1002:100:fieldcount2:/home/fieldcount2:/bin/bash: $ echo $? 0 お気づきのとおり、awkは戻りステータス0で終了します。この観点からは、ここでは問題はありません。 このawkステートメントをシェルスクリプトに組み込みたいと思います。エラーであるすべての行を印刷し、戻りコードを1(エラー)に設定したいと思います。 特定の終了ステータスを強制しようとすることができますが、awkは1行のみを出力します。 $ awk -F: ' NF!=7 {print ; exit 1}' /etc/passwd fieldcount1:x:1000:100:fieldcount1:/home/fieldcount1:/bin/bash:::: $ echo $? 1 awkを強制的に終了ステータス「1」で終了させ、一致するすべての行を印刷できますか?

1
awkのスラープモード?
ツールが好きsed、awkまたはperl -nその入力一つのプロセスレコードを一度に、レコードがされて行デフォルトでは。 いくつかは、同様にawkしてRS、GNU sedと-zかperlとは-0ooo別のレコードセパレータを選択することで、レコードの種類を変更することができます。 perl -nオプションを使用して、入力全体(複数のファイルを渡した場合は各ファイル)を単一のレコードにすることが-0777できます(または-0、0377より大きい任意の8進数が続きます。777は正規のものです)。それが彼らがスラープモードと呼ぶものです。 似たようなことをawks RSまたは他のメカニズムで実行できますか?どこでawk各プロセスのファイルごとに対立するものとしての順序で、全体としてのコンテンツをライン各ファイルの?
16 awk 



5
二重引用符の間の値を抽出する
私のクエリは、二重引用符の間の値を抽出すること""です。サンプル入力は次のとおりです。 10.219.41.68---[11 / Jun / 2014:10:23:04 -0400] Sec:0 MicSec:1797 "GET / balancer-manager HTTP / 1.1" 200 28980 "-" "curl / 7.15.5(i386 -redhat-linux-gnu)libcurl / 7.15.5 OpenSSL / 0.9.8b zlib / 1.2.3 libidn / 0.6.5 " 私は大きなログファイルを持っているので、値は行ごとに異なる可能性があり、二重引用符が最初に現れる間の値を抽出する必要があります… 期待される出力: GET /balancer-manager HTTP/1.1 誰でも何かアイデアがあれば提案してください。
16 awk 

2
2つのパターン間(および含む)の行を印刷します
行CKの末尾にある行からgrepを開始し、行の末尾にあるときにgrepを停止しDます。試しましたgrep "$CK" "$D" file..txtが、うまくいきませんでした。 入力: kkkkkkkkkkk jjjjjjjjjjjjjjjjjj gggggggggggg/CK JHGHHHHHHHH HJKHKKLKLLL JNBHBHJKJJLKKL JLKKKLLKJLKJ/D GGGGGGGGGGGGGG GGGGGGGGGGGGGG 目的の出力: gggggggggggg/CK JHGHHHHHHHH HJKHKKLKLLL JNBHBHJKJJLKKL JLKKKLLKJLKJ/D

3
ファイルの5番目の列の値に基づいて.CSVファイルをフィルター処理し、それらのレコードを新しいファイルに出力します
次の形式の.CSVファイルがあります。 "column 1","column 2","column 3","column 4","column 5","column 6","column 7","column 8","column 9","column 10 "12310","42324564756","a simple string with a , comma","string with or, without commas","string 1","USD","12","70%","08/01/2013","" "23455","12312255564","string, with, multiple, commas","string with or, without commas","string 2","USD","433","70%","07/15/2013","" "23525","74535243123","string , with commas, and - hypens and: semicolans","string with or, without commas","string 1","CAND","744","70%","05/06/2013","" "46476","15467534544","lengthy string, with …
16 linux  sed  awk  csv  filter 

2
grep:ファイル名を一度表示してから、行番号付きのコンテキストを表示します
ソースコードにはエラーコードが散在しています。grepを使用すると簡単に見つけることができますが、次の行に沿って出力を提供find_codeする(たとえばfind_code ####)実行できるbash関数が必要です。 /home/user/path/to/source.c 85 imagine this is code 86 this is more code 87 { 88 nicely indented 89 errorCode = 1111 90 that's the line that matched! 91 ok this block is ending 92 } 93 } 現在私が持っているものは次のとおりです。 find_code() { # "= " included to avoid matching unrelated number …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.