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

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

3
awkとgrepを使用したcutの正確な違いは何ですか?[閉まっている]
次の2つの手法を使用して、ファイルから目的の行の2列目を取得できることを知っています。 awk '/WORD/ { print $2 }' filename または grep WORD filename| cut -f 2 -d ' ' 私の質問は: 上記の2つのコマンドの違いは何ですか? どれが最高のパフォーマンスを発揮しますか? を使用するawkよりも使用することの利点は何cutですか? どのオプションがawk私たちに与えてくれますcutか?
30 awk  grep  performance  cut 

2
ソートせずに1つの列内の重複に基づいて行を削除します
大きな3列のファイル(〜10,000行)があり、その行の3列目の内容が別の行の3列目に表示されたときに行を削除したいと思います。ファイルのサイズによってソートが少し面倒になり、行全体が同一ではないため、以下のコードのようなものは使用できません。列3の内容のみ。 awk '!seen[$0]++' filename

6
シェルコマンドを使用して、テキストファイルの最初の列と最後の列のみを表示する方法は?
テキストファイルの最初の列と最後の列のみを表示するためにsedコマンドを使用する方法を理解するには、助けが必要です。これが私がこれまでコラム1に持っていたものです。 cat logfile | sed 's/\|/ /'|awk '{print $1}' 最後の列を表示するための私の弱い試みは次のとおりでした: cat logfile | sed 's/\|/ /'|awk '{print $1}{print $8}' ただし、これは最初の列と最後の列を取り、それらを1つのリストにマージします。sedおよびawkコマンドで最初の列と最後の列を明確に印刷する方法はありますか? サンプル入力: foo|dog|cat|mouse|lion|ox|tiger|bar
30 shell  sed  awk 


5
パターンの上の行の範囲をsed(またはawk)で削除します
パターンbananaを持つ行とその後の2行を削除する次のコードがあります。 sed '/banana/I,+2 d' file ここまでは順調ですね!しかし、私はそれを前 bananaに2行削除する必要がありますが、「マイナス記号」または何でも取得することはできません(何をgrep -v -B2 banana fileすべきかと同様ですが): teresaejunior@localhost ~ > LC_ALL=C sed '-2,/banana/I d' file sed: invalid option -- '2' teresaejunior@localhost ~ > LC_ALL=C sed '/banana/I,-2 d' file sed: -e expression #1, char 16: unexpected `,' teresaejunior@localhost ~ > LC_ALL=C sed '/banana/I,2- d' file sed: -e …

11
単一の改行のみを置き換えるより良い方法が必要ですか?
私は通常LaTexにコンパイルするため、または改行が無視される他の形式で書くので、私は文ごとに1行を書く習慣があります。空白行を使用して、新しい段落の開始を示します。 これで、このスタイルで記述されたファイルがあり、プレーンテキストとして送信したいだけです。単一の改行をすべて削除したいが、二重の改行はそのままにしておきたい。これは私がやったことです: sed 's/$^/NEWLINE/' file.txt | awk '{printf "%s ",$0}' | sed 's/NEWLINE/\n\n/g' > linebreakfile.txt これは空の行をファイルに表示されないと確信しているいくつかのテキストで置き換えます:NEWLINEそして、それはawkですべての改行を取り除きます(いくつかのウェブサイトでそのトリックを見つけました)そして、NEWLINEsを必要な2つの改行で置き換えます。 これは非常に単純なことを行うための長い方法のようです。もっと簡単な方法はありますか?また、複数のスペース(何らかの理由で時々入り込む)を単一のスペースに置き換える方法があれば、それも良いでしょう。 私はemacsを使用しているので、いくつかのemacs固有のトリックがあれば良いのですが、純粋なsedバージョンまたは純粋なawkバージョンが必要です。

7
それらを含む2つのパターン間の最初の出現を選択する方法
それらを含む2つのパターン間で最初の出現を選択するにはどうすればよいですか。sedまたはを使用してくださいawk。 私が持っています: text something P1 something content1 content2 something P2 something text something P1 something content3 content4 something P2 something text P1とP2の間に最初に現れる行が必要です(P1行とP2行を含む)。 something P1 something content1 content2 something P2 something

8
grep-inverse-matchと「前」と「後」の行を除外する方法
次のエントリを含むテキストファイルを考えます。 aaa bbb ccc ddd eee fff ggg hhh iii パターン(例fff)が与えられた場合、上記のファイルをgrepして出力を取得したいと思います。 all_lines except (pattern_matching_lines U (B lines_before) U (A lines_after)) たとえば、B = 2およびの場合、A = 1パターン=の出力fffは次のようになります。 aaa bbb ccc hhh iii grepまたは他のコマンドラインツールでこれを行うにはどうすればよいですか? 注意してください、私がしようとするとき: grep -v 'fff' -A1 -B2 file.txt 欲しいものが得られません。私は代わりに以下を取得します: aaa bbb ccc ddd eee fff -- -- fff ggg hhh …

5
Bashでhttpリンクの最後の部分を取得する方法は?
httpリンクがあります: http://www.test.com/abc/def/efg/file.jar 最後の部分のfile.jarを変数に保存したいので、出力文字列は「file.jar」です。 条件:リンクの長さは異なる場合があります。例: http://www.test.com/abc/def/file.jar. 私はそのようにしてみました: awk -F'/' '{print $7}' 、しかし問題はURLの長さなので、どんなURLの長さでも使用できるコマンドが必要です。
25 bash  shell-script  awk  cut 

4
2つのタイムスタンプ間でログを抽出する方法
2つのタイムスタンプ間のすべてのログを抽出したい。一部の行にはタイムスタンプがない場合がありますが、それらの行も必要です。つまり、2つのタイムスタンプの下にあるすべての行が必要です。私のログ構造は次のようになります。 [2014-04-07 23:59:58] CheckForCallAction [ERROR] Exception caught in +CheckForCallAction :: null --Checking user-- Post [2014-04-08 00:00:03] MobileAppRequestFilter [DEBUG] Action requested checkforcall との間のすべてを抽出したい2014-04-07 23:00とし2014-04-08 02:00ます。 開始タイムスタンプまたは終了タイムスタンプがログにない場合がありますが、これら2つのタイムスタンプの間のすべての行が必要です。

10
EOFで複数の改行を削除する方法は?
1つ以上の改行で終わるファイルがあり、1つの改行のみで終わる必要があります。Bash / Unix / GNUツールを使用してこれを行うにはどうすればよいですか? 不良ファイルの例: 1\n \n 2\n \n \n 3\n \n \n \n 修正されたファイルの例: 1\n \n 2\n \n \n 3\n 言い換えると、EOFとファイルの最後の非改行文字との間に改行が1つだけあるはずです。 参照実装 ファイルの内容を読み取り、最後にさらに2つの改行がなくなるまで1つの改行を切り取り、書き戻します。 #! /bin/python import sys with open(sys.argv[1]) as infile: lines = infile.read() while lines.endswith("\n\n"): lines = lines[:-1] with open(sys.argv[2], 'w') as outfile: for line in lines: …
25 bash  sed  awk  ed 

9
最後の列のみを印刷する方法は?
echo -e 'one two three\nfour five six\nseven eight nine' one two three four five six seven eight nine この出力を取得するために「マジック」を行うにはどうすればよいですか? three six nine 更新:この特定の方法では必要ありません。行内の列数に関係なく、一般的な解決策が必要です。たとえば、awkは常に最後の列を表示します。


8
Linuxでファイルの最後の列を削除する方法
txtファイルの最後の列を削除したいのですが、列番号がわかりません。どうすればこれができますか? 例: 入力: 1223 1234 1323 ... 2222 123 1233 1234 1233 ... 3444 125 0000 5553 3455 ... 2334 222 そして、出力を次のようにします。 1223 1234 1323 ... 2222 1233 1234 1233 ... 3444 0000 5553 3455 ... 2334

9
ファイルから2行ごとに削除する方法は?
ファイル: Data inserted into table. Total count 13 No error occurred Data inserted into table. Total count 45 No error occurred Data inserted into table. Total count 14 No error occurred Data inserted into table. Total count 90 No error occurred 期待される出力ファイル: Data inserted into table. Total count 13 Data …

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