最新記事

ファイル名の特定部分とその内容のリスト
text-processing
awk
grep
find
filenames

ファイル名の特定部分とその内容のリスト

BusyBoxがインストールされているLinuxシステムがあり、というディレクトリがあります/data/var/lib/connman。このディレクトリには、興味のないいくつかのディレクトリが含まれています。ただし、wifi___managed_psk.config" "などのファイル名パターンを持つ多くの.configファイルが含まれています。私の例のファイル名には、 _英数字の興味深いハッシュ部分が含まれています。完全なファイル名の例は次のとおりです。 "wifi_ff001122334_567890123456_management_psk.config" "wifi_778899ad_112233445566_management_none.config" 次に、各ファイルはテキストファイルで、関心のある行が含まれている場合は次のようになります。 Name = 興味深いことに。 この行の実際の例は次のとおりです。 Name = MySSID Name = r23$f"§F §"fsdfSdf これで、ファイル名からすべてのハッシュとその値を取得したいと思います。、このように: : これが私が望む結果です: MySSID : 01abcd89 MyOtherSSID : ff001122334455, r23öf"§F§"fsdfSdf : 7876543ad したがって、ファイル名からハッシュ部分を取得し、「Name =」の後のファイルの内容も確認する必要があります。 grepとawkの組み合わせを試しましたが、目的の結果が得られませんでした。 これを達成するためにどのコマンドを使用できますか?

Admin

同様の 2 つのパターン間の特定のパターンが一致しない場合は、類似した 2 つのパターン間のすべての行を削除します。
linux
text-processing
awk
sed
terminal

同様の 2 つのパターン間の特定のパターンが一致しない場合は、類似した 2 つのパターン間のすべての行を削除します。

タイトルは次のとおりですRemove all lines between two similar patterns, including the line of the starting pattern. if another specific pattern in between is not matched。 Google で回答を検索する他のユーザーが読みやすくなったため、短くしました。 質問について:特定のコンピュータに対して有価の株式と市場不可能な株式のリストがあります。共有を一覧表示できるすべてのコンピュータのリストを作成し、読み取れない共有を削除したいと思います。しかし、2つの問題に遭遇しました。まず、2 つの類似パターン間のすべての行を正しく削除します。第二に、特定のパターンが見つかった場合、同様の2つの単語間の行を削除しない方法です。 私のアドバイスは Shares for DED-SHD-ED-5: [--- Unreadable Shares ---] ADMIN$ C$ E$ H$ IPC$ Shares for DED-SHD-ED-6: [--- Unreadable Shares ---] ADMIN$ C$ IPC$ [--- Listable Shares ---] print$ Shares for DED-SHD-ED-7: [--- Unreadable Shares ---] ADMIN$ C$ IPC$ [--- Listable Shares ---] backup backup2 Shares for DED-SHD-ED-8: [--- Unreadable Shares ---] ADMIN$ C$ IPC$ Shares for DED-SHD-ED-9: [--- Unreadable Shares ---] ADMIN$ C$ IPC$ VBRCatalog [--- Listable Shares ---] backup backup2 次のコマンドを使用して、読み取れないすべての共有を削除しましたawk '/Listable Shares/,/Shares for/' input.txt。このコマンドの問題はDED-SHD-ED-8noでしたListable Shares。下のコンピュータを剥がしてからDED-SHD-ED-9販売可能な在庫を見ることができます。DED-SHD-ED-9DED-SHD-ED-8 以下の出力を参照してください(リスト内の最初のコンピュータの名前が欠落していることを知っていますが、問題ではありません)。 [--- Listable Shares ---] print$ Shares for DED-SHD-ED-7: [--- Listable Shares ---] backup backup2 Shares for DED-SHD-ED-8: [--- Listable Shares ---] backup backup2 この問題を解決するために私の考えはawk '/Listable Shares/,/Shares for/' input.txt。まず、「共有対象」と「共有対象」の間のすべての行を削除してみました。私はより簡単な答えを見つけ、現在では理解できない複雑な答えを避けるためにフォーラムを見学しました。たとえば、このコマンドを使用しましたが、sed '/^Shares for/,/^Shares for/{//!d;};' input.txtここではsed '/Shares for/,/:/{//!d;};' input2.txtコンピュータ間の線の半分を削除しました。 出力 Shares for DED-SHD-ED-5: Shares for DED-SHD-ED-6: [--- Unreadable Shares ---] ADMIN$ C$ IPC$ [--- Listable Shares ---] print$ Shares for DED-SHD-ED-7: Shares for DED-SHD-ED-8: [--- Unreadable Shares ---] ADMIN$ C$ IPC$ なぜコンピュータデータの半分しか削除されないのですか?なぜかわかりません。 Listable次のアイデアは、パターンがその行で一致する場合、「Shares for」と「Shares for」の間の行が削除されないように、コマンドに除外を追加することでした。次に、DED-SHD-ED-5などのデータがないコンピュータを削除しますDED-SHD-ED-7。しかし、たぶんこれが最善のアプローチではないかもしれません。 「Listable」スキーマは表示されないため、最初のスキーマの行を削除する方が良いかもしれません。 この問題を正しく処理する方法についてのヘルプと洞察力が必要です。 予想出力: Shares for DED-SHD-ED-6: [--- Unreadable Shares ---] ADMIN$ C$ IPC$ [--- Listable Shares ---] print$ Shares for DED-SHD-ED-7: [--- Unreadable Shares ---] ADMIN$ C$ IPC$ [--- Listable Shares ---] backup backup2 Shares for DED-SHD-ED-9: [--- Unreadable Shares ---] ADMIN$ C$ IPC$ VBRCatalog [--- Listable Shares ---] backup backup2

Admin

シェルスクリプトを使用して、一意のファイル名形式と最新の作成日を持つ特定のPDFを選択しますか?
bash
text-processing
filenames

シェルスクリプトを使用して、一意のファイル名形式と最新の作成日を持つ特定のPDFを選択しますか?

スクリプトの助けが必要です。現在のファイル名の特定の要件を満たすPDFファイルを選択して別の場所に移動しようとしています。 私が選択したいファイル名の形式には、以下の例に示すように別々のセクションがあります。 I_XXX_PACK_6788669_6_9358869.pdf 私が望むのは、ファイル名の最後の部分(たとえば9358869)を持つファイルのみを選択し、ディレクトリ内の他のすべてのpdfファイルを無視することです。 Unixツール(POSIX find、sed、grepなど)を使用して実行できますか?私の主な問題は、ファイル名の6つの区切られた部分で構成される1つのファイルのみをインポートし、他のすべてのファイルは無視しようとしていることです。 そして、システム時間の1時間前に生成されたファイルだけを選択できますか?時間を確認するために、他のファイル形式ではsedを使用しましたが、pdfファイルでは使用しませんでした。だからこれが可能かどうかはわかりません。

Admin

このAWKスクリプトがどのように機能するかを調べようとしています。
text-processing
awk

このAWKスクリプトがどのように機能するかを調べようとしています。

私の店には、誰かが以前に書いたAWKコードスニペットがありますが、文書化されていないので、それを解釈する方法がわかりません。 awk -F'~"' ' {gsub(/~/, " ", $3); print $1"~\""$2"~\""$3"~\""$4}' INFILE.dat > OUTFILE.dat 想像する: 区切られたテキストファイルには、~以下の12列があります。 本質的に文字であるデータは、列3、9、10などの二重引用符で囲まれています。 1235678~2005-04-13-13.49.42.149512~"10"~9999.44~2004-07-22~2006-05-22~2006-07-22~2006-05-29~"2000~2001"~"N"~0.00~9999.63~2005-04-13-13.49.42.149556 ^^^^^^^^^^^ 列9にはフィールド区切り文字をvarchar(100) 含めることができます~。 上記のawkコードは、~列9を空白に部分的に変換しますgsub()。 このコードがどのように機能するかを正確に伝えることができる人はいますか? 入力ファイルはINFILE.dat。出力ファイルはOUTFILE.dat。 予想される出力に関して変更する唯一のことは、9番目の列のデータです。間にスペースを使用する~必要があります。"2000~2001"出力ラインは次のとおりです。 1235678~2005-04-13-13.49.42.149512~"10"~9999.44~2004-07-22~2006-05-22~2006-07-22~2006-05-29~"2000 2001"~"N"~0.00~9999.63~2005-04-13-13.49.42.149556 ^^^^^^^^^^^

Admin

ファイルの内容を並べ替えて、各レコードの「本文」行にレコード「タイトル」行を追加します。
text-processing

ファイルの内容を並べ替えて、各レコードの「本文」行にレコード「タイトル」行を追加します。

誰でもこれを裏返す方法を知っています。 FX_AM140_EML AM140 Backend/aa.java Backend/bb.java Backend/cc.java Backend/dd.java Backend/ee.java FX_AM172_EML AM172 Backend/aa.java Backend/bb.java これで? FX_AM140_EML AM140 Backend/aa.java FX_AM140_EML AM140 Backend/bb.java FX_AM140_EML AM140 Backend/cc.java FX_AM140_EML AM140 Backend/dd.java FX_AM140_EML AM140 Backend/ee.java FX_AM172_EML AM172 Backend/aa.java FX_AM172_EML AM172 Backend/bb.java

Admin

sed
text-processing
sed

sed "無効なコマンドコード W"

sedループ内の.vttテキストファイルセットのリクエスト/ヘッダーにテキストを追加しようとしています。テキストを置き換えずにテキストのみを追加します。 テキストに改行を追加する必要があります。 テキストは次のようにする必要があります。 WEBVTT Kind: captions Language: eng File Creation Date: 2023-08 これが私が試していることです: for file in *.vtt ; do sed -i '' 'WEBVTT/nKind: captions/nLanguage: eng/nFile Creation Date: 2023-08' "$file" done 私にエラーが発生します: sed: 1: 'WEBVTT/nKind: captions/ ...': invalid command code W 理由はわかりません。二重引用符/二重引用符を切り替えてみましたが、うまくいきませんでした。

Admin

CSVファイル内で1から9の間の1桁を2桁に変換
text-processing
csv-simple

CSVファイル内で1から9の間の1桁を2桁に変換

このような何千もの行を含むCSVファイルがあります。 1664;4;5;35;37;43;5;6 1663;21;23;32;40;49;8;11 1662;16;17;34;35;44;5;10 1661;2;9;23;32;40;6;7 1660;23;25;30;44;47;9;12 1659;3;5;9;32;43;6;10 1658;4;6;10;13;34;3;5 1657;8;9;33;35;40;3;6 1656;15;20;31;44;48;1;3 1655;25;27;35;40;45;7;11 1654;7;32;33;34;38;6;9 1653;5;7;11;27;37;6;12 1652;7;31;33;35;36;7;10 1651;4;12;34;35;45;1;9 1650;5;8;29;35;48;5;6 1649;2;11;28;42;48;4;9 1648;2;11;12;19;38;4;8 1から9までの数字はすべて1桁の数字であることがわかります。 sedこの数字の前にゼロを追加して、この数字をどのように使用したり、2桁に変換したりできますか? 01 02 03 04 05 06 07 08 09 変える 1 2 3 4 5 6 7 8 9 よろしくお願いします。

Admin

AWK:2つのキー列がファイル間で一致する場合は、一致しない行を維持しながら、あるファイルの列16を別のファイルの一致する行に追加します。
shell-script
text-processing
awk
bioinformatics

AWK:2つのキー列がファイル間で一致する場合は、一致しない行を維持しながら、あるファイルの列16を別のファイルの一致する行に追加します。

2つのタブで区切られたファイル(FileA.tsvとFileB.tsv)があります。 ファイルA.tsv ID 制度法 円 いくつかの列があります... 長さ 196-0 196 0 ---- 12874 195-1 195 1 ---- 12874 56-0 56 0 ---- 3349 115-1 115 1 ---- 5297 ファイルAには何百もの行と12の列がありますが、ここではすべて説明しません。 2と3の各値は一意ではありませんが、特定の組み合わせは一意です。したがって、event_idは、2と3の値を連結して形成される一意の識別子である。 ファイルB.tsv 列1 2列 3列 いくつかの列があります... 列16 195 1 適用範囲 ---- CTTGCTTGAGCTGCTCTGCAA ... 196 0 適用範囲 ---- TTCTAAAGTATAAAAGCCTGTC ... 196 9 適用範囲 --- TTCTAAAGTATAAAAGCCTGTC ... 196 11 適用範囲 --- ACATTTAAAGAATTGCTTAAG ... FileB にはヘッダーはありません。 列 2 と列 3 は、ファイル A の列 1 と列 2 の一部と一致します。同様に、1列と2列の値は一意ではありませんが、特定の組み合わせは一意です。 FileB に現れるすべての行は常に FileA の行と一致しますが、その逆ではありません。 awk を使用して、FileA の各行に FileB の $1 と $2 と一致する $2 と $3 があることを確認し、そうであれば FileA 行全体を印刷し、その FIleB の $16 値を行の末尾に追加したいと思います。それ以外の場合、FIleA 行はそのまま印刷されます。 予想出力(ファイルC): ID 制度法 円 複数列 長さ 列16 196-0 196 0 ---- 12874 TTCTAAAGTATAAAAGCCTGTC ... 195-1 195 1 ---- 12874 CTTGCTTGAGCTGCTCTGCAA ... 56-0 56 0 ---- 3349 ---- 115-1 115 1 ---- 5297 ---- これまで私は以下を持っています: awk -F "\t" 'NR==FNR {a[$1,$2]=($16); next} ($2,$3) in a {print $0, a[$16]}' FileB.tsv FileA.tsv > FileC.tsv このコードは一致する行のみを提供しますが、一致する行の末尾に$ 16を追加しません。 空 空 空 空 空 196-0 196 0 ---- 12874 195-1 195 1 ---- 12874 If-Elseステートメントを追加しようとすると、次のようになります。 awk -F "\t" 'NR==FNR {a[$1,$2]=($16); next} { if (($2,$3) in a) {print $0, a[$16]} else {print $0}}' FileB.tsv FileA.tsv > FileC.tsv FileA のヘッダーと一致しない行を保存するために、出力は FileA です。 私は初めてawkに触れましたが、多くの調査を行い、同様のことを行う多くの例を見つけました。そして私のコードは私が見た他の例と非常によく似ています。 ただし、同じ場所に存在せず、一致しない列も保持するファイルの間に2つの対応するキー行がある例が見つかりませんでした。 これは、それぞれ一意のFileAセットとFileBセットを持つ複数のディレクトリのBashループを使用して実行されます。これに関して問題はない。すべてのディレクトリには独自の出力FileCがありますが、内容が間違っている可能性があります。 set -euo pipefail IFS=$'\n\t' for D in ~/Path/to/directories/with/tables/*; do if [ -d "${D}" ]; then cd "$D" awk -F "\t" 'NR==FNR {a[$1,$2]=($16); next} { if (($2,$3) in a) {print $0, a[$16]} else {print $0}}' *_FileB.tsv *_FileA.tsv > "${D}".FileC.tsv fi done ``` Any help or correction will be greatly appreciated.

Admin

AWK は、2 つのパターン間の行を印刷します。一致する行の最後の項目だけを印刷します。
text-processing
awk

AWK は、2 つのパターン間の行を印刷します。一致する行の最後の項目だけを印刷します。

ログファイルをフィルタリングし、2つの一致の間に数行を印刷し、最後の一致のみを印刷したいと思います。 サンプルファイルの内容: 2023-03-08 11:12:44,306 - Code Deploy - INFO - Received signal 2023-03-08 11:12:44,306 - Code Deploy - INFO - Received message signal 2023-03-08 11:12:44,306 - Code Deploy - INFO - Branch is Testing 2023-03-08 11:12:44,307 - Code Deploy - INFO - Deployment started 2023-03-08 11:13:31,782 - Code Deploy - INFO - Old version2_0_5_12 2023-03-08 11:13:31,783 - Code Deploy - INFO - New version2_0_5_13 2023-03-08 11:13:32,553 - Code Deploy - INFO - Permission fixed 2023-03-08 11:13:32,554 - Code Deploy - INFO - Deployment finished 2023-03-08 11:13:34,900 - Code Deploy - ERROR - !!!!!!!!!! EXCEPTION !!!!!!!!!(535, b'5.7.8 Username and Password not accepted. Learn more at\n5.7.8 https://support.google.com/mail/?p=BadCredentials z16-20020a170903019000b0019a97a4324dsm9818181plg.5 - gsmtp')Traceback (most recent call last): File "/root/code-dployment/server/deploy.py", line 94, in send_email server.login(gmail_user, gmail_password) File "/usr/lib/python3.5/smtplib.py", line 729, in login raise last_exception File "/usr/lib/python3.5/smtplib.py", line 720, in login initial_response_ok=initial_response_ok) File "/usr/lib/python3.5/smtplib.py", line 641, in auth raise SMTPAuthenticationError(code, resp) smtplib.SMTPAuthenticationError: (535, b'5.7.8 Username and Password not accepted. Learn more at\n5.7.8 https://support.google.com/mail/?p=BadCredentials z16-20020a170903019000b0019a97a4324dsm9818181plg.5 - gsmtp') 2023-03-09 11:52:57,194 - Code Deploy - INFO - Received signal 2023-03-09 11:52:57,194 - Code Deploy - INFO - Received message signal 2023-03-09 11:52:57,194 - Code Deploy - INFO - Branch is Testing 2023-03-09 11:52:57,195 - Code Deploy - INFO - Deployment started 2023-03-09 11:53:58,246 - Code Deploy - INFO - Old version2_0_5_13 2023-03-09 11:53:58,246 - Code Deploy - INFO - New version2_0_5_14 2023-03-09 11:53:58,498 - Code Deploy - INFO - Permission fixed 2023-03-09 11:53:58,498 - Code Deploy - INFO - Deployment finished 2023-03-09 11:54:00,797 - Code Deploy - ERROR - !!!!!!!!!! EXCEPTION !!!!!!!!!(535, b'5.7.8 Username and Password not accepted. Learn more at\n5.7.8 https://support.google.com/mail/?p=BadCredentials k17-20020aa790d1000000b005907716bf8bsm11097506pfk.60 - gsmtp')Traceback (most recent call last): File "/root/code-dployment/server/deploy.py", line 94, in send_email server.login(gmail_user, gmail_password) File "/usr/lib/python3.5/smtplib.py", line 729, in login raise last_exception File "/usr/lib/python3.5/smtplib.py", line 720, in login initial_response_ok=initial_response_ok) File "/usr/lib/python3.5/smtplib.py", line 641, in auth raise SMTPAuthenticationError(code, resp) smtplib.SMTPAuthenticationError: (535, b'5.7.8 Username and Password not accepted. Learn more at\n5.7.8 https://support.google.com/mail/?p=BadCredentials k17-20020aa790d1000000b005907716bf8bsm11097506pfk.60 - gsmtp') 2つのスキーマ間のコンテンツをインポートする必要があります。 Pattern1 = '信号受信' Pattern2 = '配布完了' 予想される結果: 2023-03-09 11:52:57,194 - Code Deploy - INFO - Received signal 2023-03-09 11:52:57,194 - Code Deploy - INFO - Received message signal 2023-03-09 11:52:57,194 - Code Deploy - INFO - Branch is Testing 2023-03-09 11:52:57,195 - Code Deploy - INFO - Deployment started 2023-03-09 11:53:58,246 - Code Deploy - INFO - Old version2_0_5_13 2023-03-09 11:53:58,246 - Code Deploy - INFO - New version2_0_5_14 2023-03-09 11:53:58,498 - Code Deploy - INFO - Permission fixed 2023-03-09 11:53:58,498 - Code Deploy - INFO - Deployment finished bashスクリプトでAWKコマンドを使用したいと思います。次のコマンドを使用して、2つのモード間でコンテンツをフィルタリングするソリューションを見つけました。 # awk '/Received signal/,/Deployment finished/' /tmp/result.log 完全一致する行のすべての項目を印刷しますが、一致するパターンの最後の項目のみを印刷するようにフィルタリングする必要があります。 上記のコマンドの出力は次のようになります。 2023-03-08 11:12:44,306 - Code Deploy - INFO - Received signal 2023-03-08 11:12:44,306 - Code Deploy - INFO - Received message signal 2023-03-08 11:12:44,306 - Code Deploy - INFO - Branch is Testing 2023-03-08 11:12:44,307 - Code Deploy - INFO - Deployment started 2023-03-08 11:13:31,782 - Code Deploy - INFO - Old version2_0_5_12 2023-03-08 11:13:31,783 - Code Deploy - INFO - New version2_0_5_13 2023-03-08 11:13:32,553 - Code Deploy - INFO - Permission fixed 2023-03-08 11:13:32,554 - Code Deploy - INFO - Deployment finished 2023-03-09 11:52:57,194 - Code Deploy - INFO - Received signal 2023-03-09 11:52:57,194 - Code Deploy - INFO - Received message signal 2023-03-09 11:52:57,194 - Code Deploy - INFO - Branch is Testing 2023-03-09 11:52:57,195 - Code Deploy - INFO - Deployment started 2023-03-09 11:53:58,246 - Code Deploy - INFO - Old version2_0_5_13 2023-03-09 11:53:58,246 - Code Deploy - INFO - New version2_0_5_14 2023-03-09 11:53:58,498 - Code Deploy - INFO - Permission fixed 2023-03-09 11:53:58,498 - Code Deploy - INFO - Deployment finished

Admin

ファイル内の重複レコードのみを識別し、重複レコードのみを新しいファイルに印刷する
text-processing
awk

ファイル内の重複レコードのみを識別し、重複レコードのみを新しいファイルに印刷する

私のCSVファイルには、列1、3、4に重複レコードがある10個の列がたくさんあります。これらの重複履歴は識別され、別々のTXTファイルに保存されなければなりません。ファイルは「,」で区切られます。 たとえば、 14479305,I,101013000000,I,31/03/2019,TD01,16573.34,0,C,6/03/2015 14479305,I,101013000000,I,31/03/2019,TD01,16573.34,0,C,6/03/2015 14479305,I,101013000000,I,31/03/2019,TD01,6591.5,0,O,23/03/2015 14479305,I,101013000000,I,31/03/2019,TD01,305592.33,0,C,27/07/2017 13256433,I,101095000000,I,31/03/2019,TD21,102992.06,0,C,20/03/2017 13256492,I,101095000000,I,31/03/2019,TD21,102992.06,0,C,20/03/2017 11595044,I,101225000000,I,31/03/2019,TD01,70000,0,O,14/10/2016 13222989,I,101296000000,I,31/03/2019,TD01,53850,0,O,21/09/2018 13222989,I,101296000000,I,31/03/2019,TD01,534850,0,O,21/09/2019 結果ファイル 14479305,I,101013000000,I,31/03/2019,TD01,16573.34,0,C,6/03/2015 14479305,I,101013000000,I,31/03/2019,TD01,6591.5,0,O,23/03/2015 14479305,I,101013000000,I,31/03/2019,TD01,305592.33,0,C,27/07/2017 13222989,I,101296000000,I,31/03/2019,TD01,53850,0,O,21/09/2018 13222989,I,101296000000,I,31/03/2019,TD01,534850,0,O,21/09/2019 私が書いたがうまくいかなかったAWKコマンドは次のとおりです。 awk -F, 'dups{a[$1,$3,$4]++; next} a[$1,$3,$4]>1' source.CSV > Dups.txt アドバイスしてください

Admin

テキストの幅の測定 (Python/PIL) 質問する
python
text-processing
python-imaging-library

テキストの幅の測定 (Python/PIL) 質問する

私はサンプル文字列のレンダリングを計算するために次の2つの方法を使用しています幅フォントの種類とサイズを設定する場合: font = ImageFont.truetype("/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf", 14) sample = "Lorem ipsum dolor sit amet, partem periculis an duo, eum lorem paulo an, mazim feugiat lobortis sea ut. In est error eirmod vituperata, prima iudicabit rationibus mel et. Paulo accumsan ad sit, et modus assueverit eum. Quod homero adversarium vel ne, mel noster dolorum te, qui ea senserit argumentum complectitur. Duo at laudem explicari deterruisset, eu quo hinc mnesarchum. Vel autem insolens atomorum at, dolorum suavitate voluptatum duo ex." #METHOD 1 draw_txt = ImageDraw.Draw(img) width, height = draw_txt.textsize(sample, font=font) print width #METHOD 2 width = 0 for c in sample: width += font.getsize(c)[0] print width METHOD 1は幅 を生成します3236が、METHOD 2は を生成します3270。なぜ相違があるのでしょうか? さらに、サンプル テキストが短いほど、これら 2 つの方法の相違が小さくなることにも気付きました。 ボンネットの下で何が起こっているのか?そして、どの幅が真実レンダリングされた文の幅は?最後に、両方の方法でほぼ同じ幅を報告するように調整することはできますか? 注: サンプルテキストの長さは445文字です

Admin