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

AWKは、テキスト処理用に設計されたインタープリター型プログラミング言語であり、通常、データ抽出およびレポートツールとして使用されます。AWKは主にUnixシステムで使用されます。

17
stdinにタイムスタンプを付加するUnixユーティリティはありますか?
私はこれでPythonで簡単な短いスクリプトを作成しましたが、テキストをフィードして、各行の前にテキストを追加できるユーティリティがあるかどうか疑問に思っていました。私の特定のケースでは、タイムスタンプです。理想的には、使用は次のようになります。 cat somefile.txt | prepend-timestamp (sedと答える前に、私はこれを試しました: cat somefile.txt | sed "s/^/`date`/" ただし、これはsedの実行時にdateコマンドを1回だけ評価するため、同じタイムスタンプが各行に誤って付加されます。)
168 unix  shell  awk 

8
bash:出力のn番目の列を取得する最短の方法
平日に、bashのコマンドから次の形式の列化された出力が繰り返し発生するとします(私の場合svn st、Railsの作業ディレクトリで実行した場合)。 ? changes.patch M app/models/superman.rb A app/models/superwoman.rb コマンドの出力(この場合はファイル名)を処理するには、2番目の列を次のコマンドの入力として使用できるように、何らかの解析が必要です。 私がやっていることはawk、2番目の列を取得するために使用することです。たとえば、すべてのファイルを削除したい場合(これは典型的なユースケースではありません)、次のようにします。 svn st | awk '{print $2}' | xargs rm 私はこれを何度も入力するので、自然な質問は次のとおりです:これをbashで実行するためのより短い(したがってよりクールな)方法はありますか? 注:私の具体的な例はsvnワークフローですが、私が求めているのは基本的にシェルコマンドの質問です。ワークフローがばかげていると感じて別のアプローチを提案した場合、私はおそらくあなたを反対票を投じませんが、他の人はそうする可能性があります。 。ありがとう:)
165 bash  awk 

9
awkの最後の2番目の列/フィールドを出力する
awkで最後から2番目の列またはフィールドを印刷したい。フィールドの数は可変です。使用できるはずですが、$NFどのように使用できるかわかりません。 そしてこれはうまくいかないようです: awk ' { print ( $NF-- ) } '
164 awk  gawk 

22
改行がファイルの最後の文字である場合、それを削除するにはどうすればよいですか?
ファイル内の最後の文字である場合、最後の改行を削除したいファイルがいくつかあります。 od -c私が実行したコマンドがファイルに最後の新しい行を書き込むことを示しています: 0013600 n t > \n 私はsedを使っていくつかのトリックを試しましたが、考えられる最善の方法はそのトリックを行わないことです。 sed -e '$s/\(.*\)\n$/\1/' abc これを行う方法はありますか?
162 linux  perl  shell  awk  sed 

8
コマンド出力から2番目の列を取得する方法は?
私のコマンドの出力は次のようなものです: 1540 "A B" 6 "C" 119 "D" 最初の列は常に数値で、その後にスペースが続き、その後に二重引用符で囲まれた文字列が続きます。 私の目的は、次のような2番目の列のみを取得することです。 "A B" "C" "D" <some_command> | awk '{print $2}'これを達成するために使用するつもりでした。しかし問題は、2番目の列の一部の値にスペースが含まれていることですawk。これは、フィールドを区切るためのデフォルトの区切り文字です。したがって、出力はめちゃくちゃになります。 "A "C" "D" 2番目の列の値(ペアの引用符を含む)をきれいに取得するにはどうすればよいですか?
152 shell  awk  ksh 

21
コマンドラインから2行ごとに1つにマージする方法は?
次の形式のテキストファイルがあります。1行目は「KEY」、2行目は「VALUE」です。 KEY 4048:1736 string 3 KEY 0:1772 string 1 KEY 4192:1349 string 1 KEY 7329:2407 string 2 KEY 0:1774 string 1 キーと同じ行に値が必要です。したがって、出力は次のようになります... KEY 4048:1736 string 3 KEY 0:1772 string 1 KEY 4192:1349 string 1 KEY 7329:2407 string 2 KEY 0:1774 string 1 $またはのような区切り文字を使用できればそれはより良いでしょう,: KEY 4048:1736 string , 3 2つのラインを1つにマージするにはどうすればよいですか?
151 bash  awk  sed  grep 

9
sedまたはawkで特定の行番号に行を挿入します
8行目にテキストを挿入するために別のスクリプトで変更する必要があるスクリプトファイルがあります。 挿入する文字列:Project_Name=sowstest、というファイルにstart。 awkとsedを使用しようとしましたが、コマンドが文字化けしました。
146 sed  awk 

10
スペースを含む行の長さでテキストファイルを並べ替える
次のようなCSVファイルがあります AS2345、ASDF1232、Mr. Plain Example、110 Binary ave。、Atlantis、RI、12345、(999)123-5555,1.56 AS2345、ASDF1232、Mrs。Plain Example、1121110 Ternary st。110 Binary ave ..、Atlantis、RI、12345、(999)123-5555,1.56 AS2345、ASDF1232、Mr. Plain Example、110 Binary ave。、RI、リバティシティ、12345、(999)123-5555,1.56 AS2345、ASDF1232、Mr. Plain Example、110 Ternary ave。、Some City、RI、12345、(999)123-5555,1.56 スペースを含む行の長さで並べ替える必要があります。次のコマンドにはスペースが含まれていません。それを変更して自分で機能するようにする方法はありますか? cat $@ | awk '{ print length, $0 }' | sort -n | awk '{$1=""; print $0}'
137 bash  sorting  text  awk 


8
awkを使用して変更を適切に保存する
私は学習していてawk、変更をファイルに保存sedする-iオプションを使用する場合と同様に、変更をファイルに書き込むオプションがあるかどうかを知りたいです。 リダイレクトを使用して変更を書き込むことができることは理解しています。しかし、それawkを行うためのオプションはありますか?
135 linux  unix  awk 

11
ファイルの行の最後の列を印刷する
常に書き込み/更新されているファイルがあります。特定の単語を含む最後の行を見つけて、その行の最後の列を印刷します。 ファイルは次のようになります。さらにA1 / B1 / C1行が追加されます。 A1 123 456 B1 234 567 C1 345 678 A1 098 766 B1 987 6545 C1 876 5434 使ってみた tail -f file | grep A1 | awk '{print $NF}' 値766を出力しますが、何も出力されません。 これを行う方法はありますか?
135 file  awk  tail 

9
awk / sedで複数回発生する可能性がある2つのマーカーパターン間の線を選択する方法
2つの異なるマーカーパターン間で発生している線を使用awkするsed方法または選択するにはどうすればよいですか?これらのパターンでマークされたセクションが複数ある場合があります。 例:ファイルに以下が含まれているとします。 abc def1 ghi1 jkl1 mno abc def2 ghi2 jkl2 mno pqr stu そして、開始パターンはでabcあり、終了パターンはmno なので、次のような出力が必要です。 def1 ghi1 jkl1 def2 ghi2 jkl2 sedを使用してパターンを一度照合します: sed -e '1,/abc/d' -e '/mno/,$d' <FILE> どのような方法があるsedか、awk ファイルの終わりまで、繰り返しそれを行うには?

10
awkの複数の引数をシバン(つまり#!)で使用するにはどうすればよいですか?
シバンを使ってgawkスクリプトを実行したいの--re-intervalですが。の「素朴な」アプローチ #!/usr/bin/gawk --re-interval -f ... awk script goes here gawkは最初の引数"--re-interval -f"(空白で分割されていない)で呼び出されるため、機能しません。そのための回避策はありますか? もちろん、gawkを直接呼び出すことはできませんが、最初の引数を分割するシェルスクリプトにラップするか、またはgawkを呼び出してスクリプトを別のファイルに入れるシェルスクリプトを作成できますが、実行する方法があるかどうか疑問に思いましたこれは1つのファイル内にあります。 シバン行の動作はシステムごとに異なります-少なくともCygwinでは、引数を空白で分割しません。私はそのように動作するシステムでそれをどのように行うかを気にしているだけです。スクリプトは移植可能であることを意図していません。
118 shell  unix  awk  gawk  shebang 


5
awk内で単一引用符をエスケープする方法
次のことをしたい awk 'BEGIN {FS=" ";} {printf "'%s' ", $1}' しかし、この方法で単一引用符をエスケープしても機能しません awk 'BEGIN {FS=" ";} {printf "\'%s\' ", $1}' これを行う方法?手伝ってくれてありがとう。
110 awk 

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