最新記事

ファイル名の特定部分とその内容のリスト
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

DNA配列の計算
text-processing
bioinformatics

DNA配列の計算

スペースで区切られたDNA配列があります。スペースを削除し、スペース文字なしでシーケンス数を返す必要があります。これを行う方法について助けていますか? bashで端末を使用しています。 たとえば、シーケンスは次のようになります。 GTCGATTGCAAGGATCCGCATGGGATAAAGGAATCGCAGTTCGAACAGGCAATGCCGCAG CTATGATAGGACATCTCTTGGAGACACCTATTAATGTTTCAGAAACGGATACCTTGGTTG TCCAGTACGAAATTAAGTTGGACAATTCTTTGACGTGCGGC CTATATTAAAATTGTGGGTACATCACTCTCTTACCTGAGAATTCCAACAGAGCAGGACGC TAACCCAGTGTCTATACCAGTCTGTGGCTTTGAAAGATTAGACACATTTCTGGATGAATT TTCAAATTCTAAATTGATCGTTCAGTCTACACTAAGACATTCGTACGTTAGTCTTGAGAA スペースを削除し、正確にいくつの塩基があるかどうかを計算したいと思います。あるいは、A、C、G、またはTが何個あるかを計算し、スペースを計算せずに追加することもできます。

Admin

gitマージの競合を説明するために、同じ意味を持つ2つのgitベースではないテキストファイルをマージします。
text-processing
diff
merge

gitマージの競合を説明するために、同じ意味を持つ2つのgitベースではないテキストファイルをマージします。

git「マージの競合」が説明されている方法と同様の意味を使用して、gitベースではなく2つのテキストファイルをマージしたいと思います。 file.1たとえば、名前が似ているが内容が同じではない2つのテキストファイルがあるとしますfile.2。これら2つのファイルを次のように3番目のファイルにマージしたいと思います。 hypothetical-merge-utility file.1 file.2 file.merged file.merged次のような方法でファイルの内容と各相違点を一覧表示する作成が必要です。 common line 1 ... common line 2 ... common line 3 ... <<<<<<< file.1 something unique from file.1 a second line of something unique from file.1 ======= file.2 something unique from file.2 >>>>>>> end of diff common line 4 ... common line 5 ... <<<<<<< file.1 something unique from file.1 ======= file.2 something unique from file.2 a second line of something unique from file.2 >>>>>>> end of diff common line 6 ... common line 7 ... ... etc. ... つまり、file.1との間のすべての違いがfile.2「マージの競合」の表現に似ていることを望みますgit。 <<<<<<<<、、、および========その他の区切り記号を使用しても構いません。>>>>>>>> Linuxには、テキストファイルをマージするために使用できるユーティリティがたくさんあることがわかっています。しかし、私はただgit「マージの競合」が説明されているのと同様の方法で、マージされたデータを具体的に表すコンテンツを見つけます。 そのようなユーティリティについて知っている人はいますか? よろしくお願いします。 修正する:Ed Mortonの次の質問に基づいて、両方のテストファイルの内容は次のとおりです。 ====ファイル。1 ==== common line 1 ... common line 2 ... common line 3 ... something unique from file.1 a second line of something unique from file.1 common line 4 ... common line 5 ... something unique from file.1 common line 6 ... common line 7 ... ====ファイル。2 ==== common line 1 ... common line 2 ... common line 3 ... something unique from file.2 common line 4 ... common line 5 ... something unique from file.2 a second line of something unique from file.2 common line 6 ... common line 7 ...

Admin

行の特定の値を合計しますが、そのフィールドのいずれかが空の場合、合計は印刷されません。
text-processing
csv

行の特定の値を合計しますが、そのフィールドのいずれかが空の場合、合計は印刷されません。

3つの列(区切り記号はカンマ)で構成されるファイルがあります。最初の列にはIDが含まれ、2番目と3番目の列には合計したい値が含まれています。合計は、出力のファイルに4番目の列として追加する必要があります。 ただし、場合によっては、3番目の列が空になることがあります(入力ファイルの2行目など)。この場合、合計に関連する列は空でなければなりません。ただし、フィールドが明示的に表示されている場合は、0合計は通常どおりに計算する必要があります(たとえば、入力ファイルの4行目)。 入力.txt 2309,-0.3,0.2 2311,1.2, 2312,0,-1 2315,2.2,0 希望の出力: 2309,-0.3,0.2,-0.1 2311,1.2,, 2312,0,-1,-1 2315,2.2,0,2.2 以前は同様の議論を見たことがありますが、2番目と3番目の列の間で合計を計算する必要があることを指定する方法と、3番目の列が空の行の合計をスキップする方法を知りません。以下のスクリプトは、同じ行(またID??)に含まれるすべての値を合計するようになっていますが、どういうわけか変更できますか?それとも他のより速い方法を提案してもらえますか? NF++; $NF=sum awk -v OFS=, -F, 'NR>1{sum=0; for(i=1; i<=NF; i++) sum += $i; NF++; $NF=sum } 1'

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