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

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

6
awk内にファイルが存在するかどうかをどのように確認しますか?[-d 'ファイル名']失敗
存在しないホームディレクトリセットを持つユーザーのリストを生成しようとしています。これはawkで実行できるはずですが、構文に問題があります。 ]で「無効な構文」と何度も言われます。何が悪いのですか? awk -F: '{ if(![ -d "$6"]){ print $1 " " $3 " " $7}}' /etc/passwd 私がおそらく最終的に使用するコードは次のとおりです。 awk -F: '{if(system( "[ -d " $6 " ]") == 1 && $7 != "/sbin/nologin" ) {print "The directory " $6 " does not exist for user " $1 }}' /etc/passwd そして、私はここに関連する質問があります。
10 bash  awk  directory 


6
/ etc / passwdファイルを処理して、ホームフォルダーが/ homeにあるすべてのユーザーをリストします。
次のような/ etc / passwdファイルの例があります。 tom:x:1000:1000:Work:/home/tom:/bin/bash george:x:1000:1000:Work:/home/george:/bin/bash bla:x:1000:1000:Work:/home/bla:/bin/bash boo:x:1000:1000:Work:/home/boo:/bin/bash bee:x:1000:1000:Work:/root/list:/bin/bash にホームフォルダーがあるすべてのユーザーを一覧表示しようとしています/home/。 私が書いた cat ~/Desktop/e.txt |awk -F ":" '{if ($6 ~/^/home/) print $1;}' ここで、e.txtはここにコピーしたテキストです。 エスケープ文字であるバックスラッシュに問題があることを理解していますが、コマンドの1行にリストできるようにするにはどうすれば修正できますか?

2
gawkインプレースとstdout
gawkの-i inplaceオプションを使用して印刷することは可能stdoutですか? たとえば、ファイルを更新したい場合で、変更がある場合は、ファイルの名前と変更された行を出力stderrして、次のようにします。 find -type f -name 'myfiles' -exec gawk -i inplace '{if(gsub(/pat/, "repl")) { print FILENAME > "/proc/self/fd/2" ; print > "/proc/self/fd/2"; } print;}' {} + しかしstdout、代わりに使用する方法、またはそのブロックを代替ストリームに出力するよりクリーンな方法はありますか?
10 awk  gawk 

2
2つの別々のファイルの列をマージする
awkを使用して2つの別々のファイルから選択的な列をマージする新しいファイルを作成するにはどうすればよいですか?両方のファイルの要素の順序を台無しにすることなく。 例:ファイル3には、ファイル1の列1、2、3およびファイル2の列4が含まれる場合があります。 File 1 A 23 8 T A 63 9 9 B 45 3 J File 2 A 0 A 6 B 5 File 3 A 23 8 0 A 63 9 6 B 45 3 5

6
与えられたパターンのセットから、パターンで始まらない行を削除します
次のようなデータを含むファイルがあります。 report aaaaaaaa - .. -th bbbbbbbbb -to ccccccccc .. --. 質問:次の文字列で始まらない行を削除したい: report -th -to つまり、desired出力は、これらの中間の不要なドットとハッシュをすべて削除し、次のようになります。 report aaaaaaaa -th bbbbbbbbb -to ccccccccc sed/ awk/ grep/ etc機能するソリューション。


4
フィールドをインラインで並べ替え
不明な数のフィールドで入力行内をソートしようとしています: 入力: ab bc bc ab cd ef bc bc cd ef cd bc ab ef ab bc cd gh 出力: ab bc ab bc bc cd ef bc cd ef ab cb cd ab bc cd ef gh 私はのようなものを使用してきましたがawk '{if($2 < $1) print $2,$1;else print}'、3つ以上のフィールドで乱雑になるようです。何か助けは?

1
LinuxでCSVをXLSファイルに変換する
次のPerlスクリプトはCSVファイルをXLSファイルに変換できます 問題は、顧客のLinuxマシンに多くのPerlモジュールをインストールする必要があることです。 このPerlスクリプトを実行するために、そして実際には私はできません。Linuxマシンは顧客のマシンだからです(モジュールをインストールすることはできません) そのため、このPerlスクリプトの他の代替手段を見つける必要があります 最初の顧客はLinux red-hatマシンバージョン5.Xを持っています そして、perlスクリプトと同じように機能するbash / ksh / sh / awkスクリプトを見つけたい CSVをXLSファイルに変換する他の代替策を見つけたい このスクリプトを見つける方法を教えてください。またはLinuxマシンでCSVをXLSに変換するためのその他のアドバイス #!/usr/bin/perl -w ############################################################################### # # Example of how to use the WriteExcel module # # Simple program to convert a CSV comma-separated value file to an Excel file. # This is more or less an …
10 linux  bash  shell-script  awk  perl 

4
awkは一度に複数の変数に割り当てます
私は文字列から2つの数値を引き出し、それらを使用して変数に割り当てようとしていますawk(gawk私が特に使用しているものです)。tmuxバージョン文字列からメジャーバージョン番号とマイナーバージョン番号をawk変数に取り出したい: 入力:tmux 2.8; maj == 2そしてmin == 8 入力:tmux 1.9a; maj == 1そしてmin == 9 入力:tmux 2.10; maj == 2そしてmin == 10 私の入力がtmux -Vstdin からのものであると仮定すると、私は現在次のものを持っています: tmux -V | awk '{ maj = +gensub(/([0-9]+)\..*/, "\\1", "g", $2); min = +gensub(/.*\.([0-9]+).*/, "\\1", "g", $2); # ...do something with maj and min... }' …
9 awk  gawk 

1
awkが予期せず文字列からドットを削除する
.csvファイルに列(2番目の場所)を追加し、その列の値を文字列にして引用符で囲みます。 次のコマンドは列を追加しますが、引用符は付けません。 awk -F"," 'BEGIN { OFS = "," } {$2="2.4.0"; print}' test.csv > output.csv 次のアプローチは引用符を組み込んでいますが、何らかの理由で最後の.(ドット)を値から削除します awk -F"," 'BEGIN { OFS = "," } {$2="\""2.4.0"\""; print}' test.csv > output.csv したがって、私の値は「2.40」になります。 これについてどうすればいいですか?
9 awk  csv 

3
ifconfigコマンドから最初のIPアドレスを取得する方法
ifconfigコマンドからの最初のIPアドレスを取得するにはどうすればよいですか? ifconfig -a enw178032: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 100.14.22.12 netmask 255.255.0.0 broadcast 100.14.255.255 inet6 fe80::250:56ff:fe9c:158a prefixlen 64 scopeid 0x20<link> ether 00:10:56:9c:65:8a txqueuelen 1000 (Ethernet) RX packets 26846250 bytes 12068811576 (11.2 GiB) RX errors 0 dropped 58671 overruns 0 frame 0 TX packets 3368855 bytes 1139160934 (1.0 GiB) TX errors 0 …
9 linux  bash  awk  sed  ifconfig 


5
awk sed ifステートメント
「。」がある場合、最初に0を追加しようとしています。その行の2番目の文字。これら2つを組み合わせることができませんでした。 awk '{ print substr( $0, 2, 1 ) }' file.txt 2番目の文字を表示 sed -ie "s/.\{0\}/0/" file.txt 先頭にゼロを追加します。 「2番目の文字がドットの場合」があるはずです。 サンプルファイル: 1.02.2017 23:40:00 10.02.2017 23:40:00 最後の: 01.02.2017 23:40:00 10.02.2017 23:40:00

1
n番目の列にm番目の列が含まれる行を取得する方法
次のようなドメインとウェブメールを含むCSVファイルがあります。 site1.com,mail.site1.com site2.com,testmail.com site3.com,mx.site3.com site4.com,smtp.site4.com site5.com,foomail.com site6.com,barmail.com site7.com,webmail.site7.com site8.com,01mx.site8.com site9.com,foobarmail.com site10.com,mx-smtp222.site10.com 同じ行のドメイン列がwebmails列に含まれている行を取得したい。上記の例の場合、出力は次のようになります。 site1.com,mail.site1.com site3.com,mx.site3.com site4.com,smtp.site4.com site7.com,webmail.site7.com site8.com,01mx.site8.com site10.com,mx-smtp222.site10.com

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