最新記事

特定の文字で始まる開き括弧の後の単語を検索する正しいgrep正規表現文字列は何ですか?
grep
regular-expression

特定の文字で始まる開き括弧の後の単語を検索する正しいgrep正規表現文字列は何ですか?

私のPythonスクリプトの中には、関連ファイルglob.glob(parent_folder_path + glob_str)を含むこの行を正しいgrepコマンドを使用してコンソールに印刷する必要がありますが、これまでは印刷方法がわかりません。 すべて - 行を検索するコードglob.globは次のとおりです。 grep --exclude-dir='.history' --exclude-dir='__pycache__' --exclude-dir='.wine' -Rinw /home/andylu/Desktop/Python/Scripts/ -e 'glob.glob' しかし、これはまだ私が達成したい正確さではありません。正規表現文字列として使用すると、'glob.glob(p*'検索結果には1行だけ表示されます。結果が私に与えられるというのがglob.glob()理解できませんね。(p*() 次に私はそれを試して'glob.glob(p.*'実際にうまくいき、すべての結果を見せましたglob.glob(parent_folder_path + glob_str)。 試行錯誤を経て近くで見つけましたが、grep構文をよりよく理解したいと思います。最後の正規表現文字列は次のように有効ですか?このチートシート、.ランダムな文字とランダムな*繰り返し数を示しますか?

Admin

awk / sedを使用して特定の列の内容を抽出する
shell-script
text-processing
awk
sed
grep

awk / sedを使用して特定の列の内容を抽出する

閉鎖。この質問はもう少し尋ねる必要があります集中。現時点では回答は許可されていません。 この質問を改善したいですか?1つの問題にのみ焦点を当てるように質問を更新してください。この記事を編集してください。 閉鎖3年前。 この問題を改善する 提供される文書: $ cat CronConfig `FILE SYSTEM` `------------` warningThreshold: 77 criticalThreshold: 99 `MEMORY` `-------` warningThreshold: 66 criticalThreshold: 88 `CPU` `----` intervalCount: 6 intervalSecs: 7 warningThreshold: 99 criticalThreshold: 88 CronConfig上記の内容を含むファイルがあります。私は値を使用し、warningThreshold次のような出力が必要です。MEMORYcriticalThresholdCPU 66 88 この値を取得するには、コマンドを使用します。 (しかし、正しい方法でやっているかどうかはわかりません。) awk 'BEGIN{FS="\n"; RS="------------"} {print $7}' CronConfig | awk 'NF {print $2}' awk 'BEGIN{FS="\n"; RS="------------"} {print $15}' CronConfig | awk 'NF {print $2}'

Admin

git diffの出力をフィルタリングするより良い方法はありますか?
awk
sed
grep
git
diff

git diffの出力をフィルタリングするより良い方法はありますか?

SOコンテキストでの質問:git diffで変更された行番号を見つける 上記の質問に従って、git2 つのリビジョン間の変更されたファイルの違いを次の形式で印刷する必要があります。 /path/to/file startline1-startline2 startline3-startline4 /path/to/another/file startline5-startline6 ... これは私のものです。試みるgitdiffの出力をフィルタリングします。 git diff --unified=0 --diff-filter=M HEAD~1 HEAD | \ grep -v -e '^[+-]' -e '^index' | \ sed 's/diff --git a.* b\//\//g; s/.*@@\(.*\)@@.*/\1/g; s/^ -//g; s/,[0-9]*//g; s/\(^[0-9]*\) +/\1-/g;' git diff上記のコマンドが出力に表示される可能性があるすべてのシナリオを満たすかどうかはわかりません。 awk既存のソリューションを改善できますか?それとも、それ自体などの他のユーティリティを使用してgitこれを達成するためのより良い方法はありますか? に基づいて回答与えられた@murulu、比較は次のとおりです。 # Using git diff [expected output w.r.t line numbers and not formatting] $ git diff --unified=0 --diff-filter=M HEAD~3 HEAD | grep -v -e '^[+-]' -e '^index' diff --git a/lib/get-config.js b/lib/get-config.js @@ -89,0 +90,5 @@ module.exports = { diff --git a/lib/pull.js b/lib/pull.js @@ -62 +62 @@ module.exports = class Pull { @@ -83 +83 @@ module.exports = class Pull { diff --git a/lib/router.js b/lib/router.js @@ -3,0 +4 @@ const yaml = require('js-yaml') @@ -125,0 +127 @@ module.exports = app => { @@ -136,0 +139 @@ module.exports = app => { # Using external diff as suggested by @muru # [expected output with formatting but line numbers don't match with git diff's output] $ git -c diff.external='./foo.sh' diff --diff-filter=M 'HEAD~3' HEAD /tmp/AAAA_get-config.js 90-89 /tmp/BBBB_pull.js 62 83 /tmp/CCCC_router.js 4-3 126-125 137-136 ファイルの行番号が異なりますrouter.js。 リポジトリ比較しよう。 出力で予想される形式を明確にしたいと思います。 git diff統合 diff 形式で出力を生成します。形式は次のとおりです。 # Assumes --unified=0 i.e no context lines diff --git a/path/to/file b/path/to/file index x..z mode --- a/path/to/file +++ b/path/to/file @@ -l1,s +l2,s @@ optional section heading - ... - ... + ... + ... diff --git a/path/to/file1 b/path/to/file1 index y..z mode --- a/path/to/file1 +++ b/path/to/file2 @@ -l3,s +l4,s @@ optional section heading - ... - ... + ... + ... . . . 予想される出力には、変更されたファイルの違い(使用)のみを含める必要があり、--diff-filer=M次の形式でなければなりません。 /path/to/file l1-l2 /path/to/file1 l3-l4 l5-l6 . . . ここでl1、...はl2統合diff形式()@@ -l1,s +l2,s @@で言及されている行番号です。 @murulu 回答問題はほとんど解決されましたが、このように変更されたグループ形式を使用して得られた行番号は、'%df%(f=l?:-%dl)\n'統合diff形式の行番号と一致しません。 などのオプションを使用して行番号(統合diff形式)を表示する方法はありますかchanged-group-format? これはMVCEを使用することです。bash gitリポジトリ 使用git diff、 $ git diff --unified=0 --diff-filter=M 9e49d ad1b3 | grep -v -e '^[+-]' -e '^index' diff --git a/execute_cmd.c b/execute_cmd.c @@ -567 +567 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, @@ -753,2 +753 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, @@ -759,2 +758 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, @@ -1104 +1102 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, diff --git a/patchlevel.h b/patchlevel.h @@ -28 +28 @@ diff --git a/subst.c b/subst.c @@ -5339 +5339 @@ clear_fifo_list () @@ -5345 +5345 @@ copy_fifo_list (sizep) @@ -5411,7 +5411,2 @@ unlink_fifo_list () @@ -5433 +5428 @@ close_new_fifos (list, lsize) @@ -5437 +5431,0 @@ close_new_fifos (list, lsize) @@ -5445,2 +5439,2 @@ close_new_fifos (list, lsize) @@ -5568 +5562 @@ clear_fifo_list () @@ -5572 +5566 @@ copy_fifo_list (sizep) @@ -5578 +5572 @@ copy_fifo_list (sizep) @@ -5583 +5577 @@ copy_fifo_list (sizep) @@ -5656 +5650 @@ close_new_fifos (list, lsize) @@ -5660 +5653,0 @@ close_new_fifos (list, lsize) @@ -5668,2 +5661,2 @@ close_new_fifos (list, lsize) diff --git a/subst.h b/subst.h @@ -276,2 +276,3 @@ extern void unlink_fifo __P((int)); 期待される出力 /execute_cmd.c 567-567 753-753 759-758 1104-1102 /patchlevel.h 28-28 /subst.c 5339-5339 5345-5345 5411-5411 5433-5428 5437-5431 5445-5439 5568-5562 5572-5566 5578-5572 5583-5577 5656-5650 5660-5653 5668-5661 /subst.h 276-276 出力は以下に基づいています。@murulu 回答 # Line numbers which don't match the expected output is indicated by "#" $ git -c diff.external='../foo.sh' diff --diff-filter=M 9e49d ad1b3 /tmp/2wJaWf_execute_cmd.c 567 753-754 # 759-760 # 1104 # /tmp/7j19Ob_patchlevel.h 28 /tmp/fQDY8b_subst.c 5339 5345 5411-5417 # 5433 # 5437 # 5445-5446 # . . .

Admin

二重引用符間の文字列の抽出
text-processing
awk
sed
grep

二重引用符間の文字列の抽出

デフォルトモジュールはウィンドウ名を出力するので、現在アクティブなウィンドウクラスを表示するカスタムPolybarモジュールを作成しようとしています。 このコマンドを使用してウィンドウクラスを取得します。 xprop -id $(xdotool getactivewindow) WM_CLASS 次の出力を取得します。 WM_CLASS(STRING) = "kitty", "kitty" ただし、希望の出力は次のとおりです。 kitty どうすればいいですか?

Admin

GNU並列処理のない大規模ファイルセットのgrepパターン
linux
files
grep
performance

GNU並列処理のない大規模ファイルセットのgrepパターン

36コアシステムで10Mファイルのパターンをすばやく見つけたいです。これを試しました。 find . -name '*.xml' -type f | xargs -P 20 grep "username" >> output しかし、その間に他の結果も得ました。 これを行うより良い方法はありますか? よろしくお願いします。

Admin

Ubuntu 18のdpkgとegrep
ubuntu
grep
dpkg

Ubuntu 18のdpkgとegrep

dpkgとコマンドを使用してegrep名前を一覧表示しますq。すでに試しました。 dpkg -l | egrep -l q dpkg -l | egrep -l ^q dpkg -l | egrep q dpkg -l | grep q 何が間違っていますか?

Admin

Grep コンテンツを再帰的に、1 つのディレクトリ深度のみ印刷
grep
recursive

Grep コンテンツを再帰的に、1 つのディレクトリ深度のみ印刷

ファイルの内容内のサブディレクトリを再帰的に検索したいのですが、最初のレベルのサブディレクトリに一致するものがありますが、気にしています。つまり、次のように与えられます。 ParentDirectory Subdirectory1 File containing match File not containing match File containing match Subdirectory2 File not containing match File not containing match Subdirectory3 File not containing match Subdirectory3.1 File containing match 私が知る必要があります: Matches: ParentDirectory/Subdirectory1 ParentDirectory/Subdirectory3 誰かがgrepまたは同様のユーティリティを使用してこれを行う方法を提供できますか?

Admin

HTMLでJSONに一致する正規表現
grep
regular-expression
json

HTMLでJSONに一致する正規表現

したがって、JSON-HTML Webページ次のパターンで行のみをフィルタリングしたいと思います。 "realname": "SOME_VALUE_COMES_HERE", 私はこれを試しました: curl https://www.mediawiki.org/w/api.php?action=query&meta=siteinfo&siprop=specialpagealiases&formatversion=2 -s | grep -oP '"realname": "[A-Za-z0-9]*",' | sort -u > special_page_names.txt ファイルが作成されましたが空です。私はコマンドで何を間違っていますかgrep -oP? 修正する 私はそれを使用せずにjqインストールできますが、「すべての基本」アプローチを好む。

Admin

与えられた文字列の後に文字列をキャッチする方法
grep
logs

与えられた文字列の後に文字列をキャッチする方法

次の内容を含むログファイルmyfile.logがあります。 Thu Jun 04 09:02:05 2020 Closing scheduler window Closing Resource Manager plan via scheduler window Clearing Resource Manager plan at database via parameter Thu Jun 04 09:22:50 2020 mystring3: APP failed to died. Likely the connection has been lost. PKCS11 function C_EncryptInit returned PKCS11 error code: 6 APP connection lost, closing wallet Thu Jun 04 09:32:20 2020 Incremental point up to RBA [0x5a5f.43feb8.0], current log tail at RBA [0x5a5f.44d433.0] Thu Jun 04 09:39:54 2020 mystring3: APP failed died. Likely the connection has been lost. PKCS11 function C_EncryptInit returned PKCS11 error code: 6 APP connection lost, closing wallet Thu Jun 04 09:51:12 2020 mystring1: APP failed check failed to cache object handle. Error code: 1014 APP connection lost, closing wallet Thu Jun 04 09:51:18 2020 Errors in file /folder1/folder2/folder3/file.log: Err-9087: cpu time or run time policy violation Thu Jun 04 09:52:07 2020 Dumping diagnostic data in directory=[cdmp_20200604095207], requested by (instance=8, osid=313861), summary=[incident=969964]. Thu Jun 04 10:02:24 2020 Incremental point up to RBA [0x5a5f.48846c.0], current log tail at RBA [0x5a5f.4a1de0.0] TABLE SYS.USER: ADDED INTERVAL PARTITION SYS_P3375 (3814) VALUES LESS THAN (TO_DATE(' 2020-06-11 01:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'CAL=GREGORIAN')) 「mystring」をgrepすると、次の形式で数行が表示されます。 grep -B1 -A2 mystring myfile.log | grep -B1 -A2 mystring myfile.log | grep -B1 -A2 mystring myfile.log | grep "2009年6月4日" -A3 Thu Jun 04 09:22:50 2020 mystring3: APP failed to died. Likely the connection has been lost. PKCS11 function C_EncryptInit returned PKCS11 error code: 6 -- Thu Jun 04 09:39:54 2020 mystring3: APP failed died. Likely the connection has been lost. PKCS11 function C_EncryptInit returned PKCS11 error code: 6 -- Thu Jun 04 09:51:12 2020 mystring1: APP failed check failed to cache object handle. Error code: 1014 APP connection lost, closing wallet しかし、上記のタイムスタンプとともに「デルタポイント」のある行が必要な次の形式で行を取得したいと思います。 「ポストライン引数」(-A2)を(-A5)に増やすことはできますが、同じgrepコマンドで名前のある文字列を取得して複数回発生した場合に「増分点」を見逃さないようにするにはどうすればよいですか? "私の検索文字列の文字列行または特定の時間範囲の行(2009年6月4日) Thu Jun 04 09:22:50 2020 mystring3: APP failed to died. Likely the connection has been lost. PKCS11 function C_EncryptInit returned PKCS11 error code: 6 Thu Jun 04 09:32:20 2020 Incremental point up to RBA [0x5a5f.43feb8.0], current log tail at RBA [0x5a5f.44d433.0] -- Thu Jun 04 09:39:54 2020 mystring3: APP failed died. Likely the connection has been lost. PKCS11 function C_EncryptInit returned PKCS11 error code: 6 -- Thu Jun 04 09:51:12 2020 mystring1: APP failed check failed to cache object handle. Error code: 1014 APP connection lost, closing wallet Thu Jun 04 10:02:24 2020 Incremental point up to RBA [0x5a5f.48846c.0], current log tail at RBA [0x5a5f.4a1de0.0]

Admin

同じ行で一致する列を見つける方法は?
linux
bash
grep
rhel

同じ行で一致する列を見つける方法は?

インストールされた購読と現在使用されている購読の終了日を知りたいです。 subscription-manager list --installed | grep Ends | awk '{print $2 }') サブスクリプションが複数ある場合、複雑さが発生します。名前に「サーバー」を含むサブスクリプションと一致する終了日と名前をどのように取得できますか? +-------------------------------------------+ Installed Product Status +-------------------------------------------+ Product Name: Red Hat Enterprise Linux Server Product ID: 69 Version: 7.7 Arch: x86_64 Status: Subscribed Status Details: Starts: 27/11/19 Ends: 27/11/20 Product Name: Red Hat Enterprise Linux High Availability for x86_64 Product ID: 83 Version: 7.7 Arch: x86_64 Status: Subscribed Status Details: Starts: 27/11/19 Ends: 27/11/20

Admin

awkまたはgrepを使用したlsblkコマンドのフィルタリング
awk
grep
lsblk

awkまたはgrepを使用したlsblkコマンドのフィルタリング

このコマンドの結果をフィルタリングする必要があります。 lsblk -rno "name,size,mountpoint,fstype" | grep -v 'sda' 私のコンピュータで上記のコマンドの結果をお知らせします。 sdb 223,6G sdb1 179,8G /VMs/qemu ext4 sdb2 29,5G [SWAP] swap sdc 15G ntfs sdd 7,5G sdd1 7,5G ext4 私に必要なフィルタリングは、マウントされていないものとファイルシステムが残っているものだけをフィルタリングすることです。したがって、理想的にはフィルタリング後に残ったものは次のとおりです。 sdc 15G ntfs sdd1 7,5G ext4 私の目標は、USBドライブをマウントするためのスクリプト(dmenuのrofiを使用して呼び出すことができる)を持つことです。私はオンラインでいくつかの解決策を見つけましたが、これらの解決策の問題は、すべてのドライブにパーティションがあると仮定することです。ご覧のとおり、私は最初にパーティション化されていない外付けドライブ(ntfsなど)を使用します。だから私にはこのような変更が必要です。

Admin