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

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


4
awkを使用して、可変数のフィールドを持つファイルの最初の列の幅を変更します
awkのprintf関数の使用方法は理解していますが、すべてのフィールドを指定する必要はありません。 たとえば、これが私のファイルだとします。 c1|c2|c3|c4|c5 c6|c7|c8|c9|c10 c11|c12|c13|c14|c15 すべてのレコードの最初のフィールドがc11の幅になるようにフォーマットします-最初のフィールドで最も長いセル: c1 |c2|c3|c4|c5 c6 |c7|c8|c9|c10 c11|c12|c13|c14|c15 指定できることを理解しています: awk -F"|" '{printf "%-3s%s%s%s%s\n", $1, $2, $3, $4, $5}' file > newfile 最初の列の幅を知りたいが、ファイル内のフィールド数がわからないとします。基本的に私は次のようなことをしたいです: ... '{printf "%-3s|", $1}' ...その後、残りのフィールドを元の形式で印刷します。

5
ファイルの最後のn行を編集するにはどうすればよいですか?
ファイルの最後のn行を編集できるコマンドはありますか?私はいくつかのファイルを持っていますが、そのすべてに異なる行数が含まれています。しかし、各ファイルの最後のn行を変更したいと思います。目標は、最後のn行でコンマをセミコロンに置き換えることです。しかし、最後のn行のみです。 行を削除したくありません。各ファイルの最後のn行のすべてのコンマをセミコロンに置き換えたいだけです。 sedコマンドを使用して、最後の行をこのコマンドで置き換えることができます。ここで説明するように: ファイルの最後の行のテキストを削除するにはどうすればよいですか? しかし、これにより、最後のn行ではなく、最後の行のみを変更できます。

8
文字が1回だけ含まれている場合に行を削除する方法
特定の文字を1回だけ含むファイルから行を削除したいのですが、その行が複数回存在する場合や存在しない場合は、その行をファイルに残してください。 例えば: DTHGTY FGTHDC HYTRHD HTCCYD JUTDYC ここで、私は削除したい文字があるCので、このコマンドは行を削除する必要がありますFGTHDCし、JUTDYC彼らが持っているので、C正確に一度だけ。 sedまたはを使用してこれを行うにはどうすればよいawkですか?

5
アンダースコアをカンマで置き換え、CSVで二重引用符を削除する
私はCSVファイルを持っています input.csv "1_1_0_0_76" "1_1_0_0_77" "1_1_0_0_78" "1_1_0_0_79" "1_1_0_0_80" "1_1_0_0_81" "1_1_0_0_82" "1_1_0_0_83" "1_1_0_0_84" "1_1_0_0_85" ............. 等々。 このCSVファイルをに変換する必要があります result.csv 1,1,0,0,76 1,1,0,0,77 1,1,0,0,78 1,1,0,0,79 1,1,0,0,80 1,1,0,0,81 1,1,0,0,82 1,1,0,0,83 1,1,0,0,84 1,1,0,0,85

1
三項演算子と印刷
以下のコマンドの何が問題になっています awk 'BEGIN {a = 5;b=6; (a==b)? print "a==b" : print "a!=b"}' 出力: awk: BEGIN {a = 5;b=6; (a==b)? print "a==b" : print "a!=b"} awk: ^ syntax error
10 awk 

9
行を列に変換する
ハイパーバイザーで実行されているVMに関する詳細を含むファイルがあります。コマンドを実行して、出力をファイルにリダイレクトします。そして、以下のフォーマットで利用可能なデータです。 Virtual Machine : OL6U5 ID : 0004fb00000600003da8ce6948c441bb Status : Running Memory : 65536 Uptime : 17835 Minutes Server : MyOVS1.vmorld.com Pool : HA-POOL HA Mode: false VCPU : 16 Type : Xen PVM OS : Oracle Linux 6 Virtual Machine : OL6U6 ID : 0004fb00000600003da8ce6948c441bc Status : Running Memory …

11
Grepの一致と抽出
次のような行を含むファイルがあります proto=tcp/http sent=144 rcvd=52 spkt=3 proto=tcp/https sent=145 rcvd=52 spkt=3 proto=udp/dns sent=144 rcvd=52 spkt=3 私は、プロトの値を抽出する必要がありtcp/http、tcp/https、udp/dns。 これまでのところ、これを試しましたgrep -o 'proto=[^/]*/'が、値はとしてのみ抽出できましたproto=tcp/。
10 awk  grep 

5
awk / sed / perl one liner + jsonファイルからプロパティ行のみを印刷する方法
jsonファイルからプロパティ行のみを印刷する方法 jsonファイルの例 { "href" : "http://master02:8080/api/v1/clusters/HDP/configurations?type=kafka-env&tag=version1527250007610", "items" : [ { "href" : "http://master02:8080/api/v1/clusters/HDP/configurations?type=kafka-env&tag=version1527250007610", "tag" : "version1527250007610", "type" : "kafka-env", "version" : 8, "Config" : { "cluster_name" : "HDP", "stack_id" : "HDP-2.6" }, "properties" : { "content" : "\n#!/bin/bash\n\n# Set KAFKA specific environment variables here.\n\n# The java implementation to use.\nexport JAVA_HOME={{java64_home}}\nexport …
10 awk  sed  perl  json  jq 

3
複数行のテキストファイルで、中かっこの間のすべてのテキストを削除するにはどうすればよいですか?
例: This is { the multiline text file } that wants { to be changed } anyway. になるはずです: This is that wants anyway. フォーラムでいくつかの同様の スレッドを見つけましたが、それらは複数行の中括弧で動作しないようです。 可能であれば、grep、sed、awkなどに基づくソリューションなど、1行の方法を使用することをお勧めします。 編集:ソリューションは問題ないようですが、元のファイルに中括弧のネストが含まれていることに気づきました。だから私は新しい質問を開いています。皆さん、ありがとうございます。複数行のテキストファイルで、ネストされた中かっこの間のすべてのテキストを削除するにはどうすればよいですか?

4
awkディスプレイの空白行を削除する
私はこの質問の解決策を見つけ出そうとしていました。awkソリューションに使いたかった。 私の入力ファイルは以下のようなものです。 -bash-3.2$ cat file ramesh ramesh_venkat ramesh3_venkat3 ramesh4 ramesh5 venkat venkat3 venkat4 私は、使用awk後に第2の値を抽出するためのコマンドを_以下のように。 awk -F "_" '{print $2}' file ただし、上記のコマンドでは正しい値が出力されますが、出力に空白行が表示されます。2つの質問があります。 質問1 私は取得するようにはどうすれば出力で空白行を削除することができますvenkatし、venkat3出力には? 私が使用している場合はprintf代わりにprint私の中にawk、私が得るvenkatvenkat3私が達成したかったされていない出力として。次のような出力が必要です venkat venkat3 質問2 これらの値を連想配列などとして使用して、値が実際に$1列にあるかどうかをどのように確認できますか? 私は何かを達成したかったのですが、 awk -F "_" '$2==1{print $1}' file 編集 私はawkステファンの解決に気づきませんでした。私が言ったのと同じことをしていますか?
10 awk 


2
コマンドラインからawk変数を設定する方法は2つありますか?
プログラムテキストの後にawkコマンドラインで設定してawk変数を割り当てるO'Reillyの例(1997)に気づきました。動作しますが、この構文はman / info awkにはありません。見逃したことがありますか。それは低価格ですか...?マニュアルで見た唯一の構文はオプションです。-v awk '/home/{print foo, bar}' foo="cat" bar="dog" /proc/$$/cmdline 出力: cat dog
10 awk 


6
grepの-A -B -Cスイッチ(前後に数行を出力する)に代わるものはありますか?
grep -A 2 -B 3 grep文字列の後に2行印刷し、その前に3行印刷します。 grep -C 3 前に3行と後の3行を印刷します 残念ながら、grep私が使用しているものはこれらのオプションをサポートしていません。これをシミュレートするために使用できる代替コマンドまたはスクリプトはありますか?sed/ awk/ perl/ shellスクリプトを使用していますか?

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