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

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

4
AWK /…による行頭置換の行カウンターをインクリメントする方法
私は最初にSED(sed "s/^/COUNTER \&/" /tmp/1.tex)について考えましたが、それは単一の行用に設計されてawkおりgawk、統合アプローチでの素晴らしい経験があるため、今はsedでカウンター自体をインクリメントできません。データ What & South Dragon & North Dragon & 5 \\ \hline What & South Dragon & North Dragon & 5 \\ \hline What & South Dragon & North Dragon & 5 \\ \hline 期待される出力 1 & What & South Dragon & North Dragon & 5 \\ …

8
特定の列に特定の値を持つ行をgrepする方法は?
次のようなファイルがあります 200.000 1.353 0.086 200.250 1.417 0.000 200.500 1.359 0.091 200.750 1.423 0.000 201.000 1.365 0.093 201.250 1.427 0.000 201.500 1.373 0.093 201.750 1.432 0.000 202.000 1.383 0.091 202.250 1.435 0.000 202.500 1.392 0.087 202.750 1.436 0.000 203.000 1.402 0.081 203.250 1.437 0.001 203.500 1.412 0.073 204.000 1.423 0.065 204.500 …
9 awk  grep 

2
固定テキストから始まり、最初の空白行までのGrep
次のprova.txtようなファイルがあります。 Start to grab from here: 1 fix1 fix2 fix3 fix4 random1 random2 random3 random4 extra1 extra2 bla Start to grab from here: 2 fix1 fix2 fix3 fix4 random1546 random2561 extra2 bla bla Start to grab from here: 1 fix1 fix2 fix3 fix4 random1 random22131 「ここから始めましょう」から最初の空白行にグレップアウトする必要があります。出力は次のようになります。 Start to grab from …

1
trueおよびfalseのawk条件
を使用した場合awk 0 inputfile、何も出力されない原因に遭遇しました0。これは、条件が偽であることを意味します。 を使用するとawk 1 inputfile、1awkが解釈する各行について、すべてを平均として印刷します。 を使用するとawk any_string inputfile、すべてのawk変数がゼロとして初期化されるためfalseになるため、何も出力されません。 しかし、を使用awk any_integer inputfileすると、trueになり、ファイルの各行を出力します。理由は何でしょうか? これについては、GNU awkマニュアルで説明されていますが見つかりません。
9 awk  gawk 

4
awkに関する質問
わかりました、これは複雑な質問なので、はっきりと説明します。次のようなファイルのコンテンツを取得しました。 $ Cat File1 ABC Cool Lol POP {MNB} ABC Cool Lol POP {MNB} ABC Cool Lol POP {MNB} ABC Cool Lol POP {TBMKF} ABC Cool Lol POP {YUKER} ABC Cool Lol POP {EFEFVD} 欲しい出力 -Cool MNB + POP ; -Cool MNB + POP ; -Cool MNB + POP ; …

7
file2から行の正確なブロック(file1の内容)をgrep
2つのファイルがfile1ありfile2ます。 のサンプルコンテンツfile1は次のとおりです。 A B C D E F G H の内容file2は次のようなものです: A B few other lines E F few more other lines A B C D E F G H few more other lines G H したがって、file1コンテンツのブロック全体file2のみを検索したいと考えています。つまり、出力には次の行のみが含まれます。 A B C D E F G H 注意してください:-一緒に来る行のみが出力の一部になるはずです。

5
/ path / to / fileを/ p / t / fileに短縮する方法
awk各親/中間レベルの最初の文字を使用して、完全なベース名を使用して、Unixパスの文字列を短くするエレガントなワンライナー(例:)を探しています。例で示す方が簡単: /path/to/file → /p/t/file /tmp → /tmp /foo/bar/.config/wizard_magic → /f/b/./wizard_magic /foo/bar/.config/wizard_magic→ /f/b/.c/wizard_magic 以下の@MichaelKjörlingおよび@ChrisHによる良い点を考慮して、この例では、最初の文字がドットの場合に最初の2文字を表示する方法を示しています。
9 sed  awk  string 

5
2つのファイルの代替行をマージする
ファイル1: .tid.setnr := 1123 .tid.setnr := 3345 .tid.setnr := 5431 .tid.setnr := 89323 ファイル2: .tid.info := 12 .tid.info := 3 .tid.info := 44 .tid.info := 60 出力ファイル: .tid.info := 12 .tid.setnr := 1123 .tid.info := 3 .tid.setnr := 3345 .tid.info := 44 .tid.setnr := 5431 .tid.info := 60 .tid.setnr := …

7
複数行のレコードを分割せずに大きなテキストファイルを効率的に分割する方法
私は大きなテキストファイルを持っています(gzしたとき〜50Gb)。ファイルには4*N行またはNレコードが含まれています。つまり、すべてのレコードは4行で構成されます。このファイルを、入力ファイルのおよそ25%のサイズの4つの小さなファイルに分割したいと思います。ファイルをレコード境界で分割するにはどうすればよいですか? 素朴なアプローチはzcat file | wc -l、行数を取得し、その数を4で除算してからを使用することsplit -l <number> fileです。ただし、これはファイルを2回超えるため、行カウントは非常に遅くなります(36分)。もっと良い方法はありますか? これは近いですが、私が探しているものではありません。受け入れられた回答も行数をカウントします。 編集: このファイルには、fastq形式のシーケンスデータが含まれています。2つのレコードは次のようになります(匿名化)。 @NxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxGCGA+ATAGAGAG xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxTTTATGTTTTTAATTAATTCTGTTTCCTCAGATTGATGATGAAGTTxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + AAAAA#FFFFFFFFFFFFAFFFFF#FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF<AFFFFFFFFFFAFFFFFFFFFFFFFFFFFFF<FFFFFFFFFAFFFAFFAFFAFFFFFFFFAFFFFFFAAFFF<FAFAFFFFA @NxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxGCGA+ATAGAGAG xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxCCCTCTGCTGGAACTGACACGCAGACATTCAGCGGCTCCGCCGCCxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + AAAAA#FFFFF7FFFFFFAFFFFA#F7FFFFFFFFF7FFFFFAF<FFFFFFFFFFFFFFAFFF.F.FFFFF.FAFFF.FFFFFFFFFFFFFF.)F.FFA))FFF7)F7F<.FFFF.FFF7FF<.FFA<7FA.<.7FF.FFFAFF 各レコードの最初の行はで始まり@ます。 EDIT2: zcat file > /dev/null 31分かかります。 EDIT3: 最初の行のみがで始まり@ます。他の誰もこれまでしません。こちらをご覧ください。レコードは整理された状態である必要があります。結果のファイルに何かを追加することはできません。

8
sedコマンドを使用してLinuxの各行の最後の単語を出力できますか?
以下の行で構成されるファイルがある場合、 12345 567 7878 66 er3 t45t y6y46y 4年6年656年5年 46年6年65年7年66年 yy46y6y 出力は次のようになります。 66 y6y46y y5y y66uyuyy y46y6y コマンドsed 's/.* //g'ファイル名と他のいくつかのsedコマンドを試しましたが、機能しません。 正確なsedコマンドは何ですか?

8
前の行に行を追加する方法は?
解析と分析が必要なログファイルがあります。ファイルには、次のようなものが含まれています。 ファイル: 20141101 server contain dump 20141101 server contain nothing {uekdmsam ikdas jwdjamc ksadkek} ssfjddkc * kdlsdl sddsfd jfkdfk 20141101 server contain dump 上記のシナリオに基づいて、開始行に日付または前の行に追加する必要がある数値が含まれていないかどうかを確認する必要があります。 出力ファイル: 20141101 server contain dump 20141101 server contain nothing {uekdmsam ikdas jwdjamc ksadkek} ssfjddkc * kdlsdl sddsfd jfkdfk 20141101 server contain dump

4
各IPアドレスがログファイルに表示される回数のカウント
次のような形式のファイルがあります。 $ cat file.txt 27.33.65.2 27.33.65.2 58.161.137.7 121.50.198.5 184.173.187.1 184.173.187.1 184.173.187.1 ファイルfile.txtを次のような形式に解析する最良の方法は何ですか? 27.33.65.2: 2 58.161.137.7: 1 121.50.198.5: 1 184.173.187.1: 3 つまり、ファイルをループして、各IPアドレスが出現する回数を数えたいのです。私はすでにそれを実行しているsortので、すべてのIPアドレスは順番に並べられており、互いに直接続いています。
9 awk  sort 

3
AWKで行(行)を減算する方法
AWKを使用してラインを減算する方法を理解しようとしています。たとえば、入力ファイルが次のとおりだとします。 30 20 出力は次のようになります。 10 テストとして、「使用済み」メモリ列を次のように計算しようとしています。 $ cat /proc/meminfo だから今私はこれを書きました: $ grep -P 'MemTotal|MemFree' /proc/meminfo | \ -- Here comes the calculation using AWK 私は以下を試しました: $ grep -P 'MemTotal|MemFree' /proc/meminfo | \ awk '{print $2}' | awk '{$0-s}{s=$0} END {print s}' しかし、これは私にデータの最後の行を与えるだけです。 有効な解決策を見つけましたが、それが最適な解決策ではないかと思います。私のすべてのコーディング経験から、行数をハードコーディングするのはひどいことがわかります:P $ grep -P 'MemTotal|MemFree' /proc/meminfo | \ …
9 linux  awk 

2
文字列を順次インデックスに置き換えます
誰かがこれを達成するためのエレガントな方法を提案できますか? 入力: test instant () test instant () ... test instant () //total 1000 lines 出力は次のようになります。 test instant1 () test instant2 () test instant1000() 空の行が入力ファイルにあり、同じディレクトリの下に一度に処理する必要のあるファイルがたくさんあります。 同じディレクトリ内の多くのファイルを置き換えるためにこれを試してみましたが、機能しませんでした。 for file in ./*; do perl -i -000pe 's/instance$& . ++$n/ge' "$file"; done エラー: Substitution replacement not terminated at -e line 1. Substitution replacement …

2
awkを使用して2つのファイルを処理する
UnixとAwkを使用した2つのファイルの比較を読みました。本当に面白いです。私はそれを読んでテストしましたが、完全に理解することはできず、他の場合にそれを使用します。 2つのファイルがあります。file11つのフィールドがあり、もう1つのフィールドには16フィールドがあります。1の要素を読み取りfile、それらをの3番目のフィールドと比較したいfile2。各要素が一致した場合、フィールド5の値を合計しますfile2。例として: ファイル1 1 2 3 ファイル2 2 2 2 1 2 3 6 1 2 4 4 1 1 2 3 6 3 3 3 4 要素1の場合、フィールド3の値が1 file1であるフィールド5に値を追加しますfile2。そして、要素2と3にも同じことを行いfile1ます。1の出力は(3 + 4 = 7)で、2の出力は2、3の出力は4です。 どのようにawkで書けばよいかわかりません。

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