問題タブ [shell]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
bash - ファイル内のトークンの出現回数をカウントする
各 http リクエストのタイムスタンプを含むサーバー アクセス ログがあり、毎秒のリクエスト数を取得したいと考えています。sed
、およびを使用してcut -c
、これまでのところ、ファイルを次のようなタイムスタンプだけに切り詰めることができました。
2008 年 9 月 22 日 20:00:21 +0000 2008 年 9 月 22
日 20:00:22 +0000 2008 年
9 月 22 日 20:00:22 +0000 2008 年 9 月
22 日 20:00:22 +0000
22- 2008 年 9 月 20:00:24 +0000
2008 年 9 月 22 日 20:00:24 +0000
私が取得したいのは、それぞれの一意のタイムスタンプがファイルに表示される回数です。たとえば、上記の例では、次のような出力を取得したいと考えています。
2008 年 9 月 22日 20:00:21 +0000: 1 2008 年
9 月 22 日 20:00:22 +0000: 3 2008 年
9 月 22 日 20:00:24 +0000: 2
sort -u
タイムスタンプのリストを一意のトークンのリストにフィルターして、grepのように使用できることを期待していました
しかし、これは一致する行の総合計の 1 つの行を生成するだけです。
これは、いくつかのユーティリティをつなぎ合わせて 1 行で実行できることは知っていますが、どのユーティリティかはわかりません。誰でも知っていますか?
linux - stdoutに文字列が表示されるまで、ループでコマンドを実行するにはどうすればよいですか?
stdoutで文字列を観察するまでループでコマンドを実行し、その後停止するような、perl、ruby、bashを備えた簡単なワンライナーがあると確信しています。理想的には、stdoutもキャプチャしたいのですが、コンソールに接続する場合は、それで十分かもしれません。
現在問題となっている特定の環境はRedHatLinuxですが、Macでも同じことが必要になる場合があります。したがって、何か、一般的で*nixyが最適です。Windowsについては気にしないでください-おそらく*nixyはcygwinの下で機能します。
更新:「いくつかの文字列を観察する」とは、「stdoutはいくつかの文字列である」ではなく「stdoutにいくつかの文字列が含まれる」ことを意味することに注意してください。
macos - 頻繁に実行するタスクを設定するにはどうすればよいですか?
スクリプトを30分ごとに実行するにはどうすればよいですか?OSごとに異なる方法があると思います。OSXを使用しています。
linux - 複数のJavaファイルをコンパイルするLinux
これが私のディレクトリ構造です。
/user/a /user/b /user/b
フォルダー a、b、c 内に person.java ファイルがあります (これは同じファイルで、1 行の変更のみです。
今、私のシェルでは、私の/ user /ディレクトリにいて、やろうとしています
シェルは次のエラーを返します。
person.java:14: クラスが重複しています: person
これを解決するものはありますか?
winapi - SHGetFolderPath() 32 ビット対 64 ビット
CSIDL_PROGRAM_FILES ID の代わりに CSIDL_PROGRAM_FILESx86 フォルダー ID を使用して 32 ビット システムでSHGetFolderPath API 呼び出しを使用するとどうなりますか?
理論的には、CSIDL_PROGRAM_FILESx86 はC:\program files (x86)
64 ビット システムにマップする必要がありますが、このパスが存在しない 32 ビット システムでは何にマップされますか?
unix - shell/bashの2つのコマンド間のinput_and_outputの接続
stdin / stdoutから読み取りと書き込みを行う2つの(UNIX)プログラムAとBがあります。
私の最初の問題は、AのstdoutをBのstdinに接続し、BのstdoutをAIeのstdinに接続する方法です。Bしかし双方向パイプ。execを使用してリダイレクトすることでこれを解決できると思いますが、機能させることができませんでした。プログラムはインタラクティブであるため、一時ファイルは機能しません。
2番目の問題は、各方向を複製し、ロギングプログラムを介して複製をstdoutにパイプして、プログラム間を通過する(テキスト行ベースの)トラフィックを確認できるようにすることです。ここで、最初の問題を解決できれば、tee>(...)で逃げることができます。
これらの問題はどちらもよく知られている解決策があるはずですが、私は何も見つけることができませんでした。
私はPOSIXシェルソリューション、または少なくともcygwinのbashで機能するものを好みます。
あなたの答えのおかげで、私は次の解決策を思いつきました。A / Bコマンドは、ncを使用して2つのポートをリッスンします。ロギングプログラムはsedを使用します(バッファなしの処理には-uを使用)。
これは、ポート47001および47002への接続をリッスンし、すべてのトラフィックを標準出力にエコーします。
シェル2では次のことを行います。
シェル3では次のことを行います。
これで、シェル2に入力された行はシェル3に書き込まれ、その逆も同様で、トラフィックはシェル1に記録されます。
上記はCygwinでテストされています
更新:上記のスクリプトは数日後に動作を停止しました(!)。どうやらそれはデッドロックする可能性があります。回答の提案のいくつかは、より信頼できるかもしれません。
linux - シェルコマンドを使用して、除外されたファイルとフォルダーのリストをtarするにはどうすればよいですか?
単一のディレクトリ(大量のデータを含む)を除外して、ファイルとフォルダ(すべて同じディレクトリ内)のリストをtarするにはどうすればよいですか?
shell - KornShell (ksh) ラップアラウンド
わかりました、これは単純だと確信していますが、それは私を夢中にさせています。私は最近、少し時間をさかのぼって Redhat 9 を使用しなければならなかったプログラムに取り組みました。テキストを新しい行に折り返すのではなく、画面を右にスライドさせます(コマンドの左側を切り取ります)。コマンドラインから直接前のコマンドを簡単にコピーして貼り付けることができないため、これは私にとって困難です。履歴を見て、そこからコマンドを貼り付ける必要があります。ご参考までに、私は多くのコマンドライン awk スクリプトを実行しているため、行が非常に長くなります。
入力しているコマンドの右側に表示を移動する代わりに、コマンド ラインを強制的に折り返す方法はありますか?
マンページのオプションを調べてみましたが、うまくいきませんでした。
私は走っています:
- XFree86 4.2.99.903(174)
- KSH 5.2.14。
ありがとう。
perl - 現在のファイルの内容に基づいて awk から別のファイルを検索/読み取ることは可能ですか?
(GNU)awk
で巨大なファイルを処理しています (他の利用可能なツールは、Linux シェル ツール、古い (>5.0) バージョンの Perl ですが、モジュールをインストールできません)。
私の問題: field1、field2、field3 に X、Y、ZI が含まれている場合、field4 と field5 を 1 行に含む別のディレクトリでファイルを検索し、見つかったファイルのデータを現在の出力に挿入する必要があります。
例えば:
実際のファイル行:
ここで、たとえば別のファイルを (別のディレクトリで) 検索する必要があります。
元のファイルから STDOUT に書き込み、見つかったファイルから$0
、元のファイルの次の行を処理します。f2
f3
でそれを行うことは可能awk
ですか?
bash - bash getopts 関数はコマンドライン オプションを破壊しますか?
同じスクリプトで bash の "getopts" 関数を 2 回使用できますか?
特定のオプションの値に応じて異なる意味を持つ一連のオプションがあります。getopts がその特定のオプションを最初に評価することを保証できないため、その特定のオプションのみを使用して getopts を 1 回実行し、それから他のオプションを使用して 2 回目に実行したいと考えています。