最新記事

「0」と最初の2つのフィールドを除くcsvファイルのすべてのテキストを1に変換するには?
text-processing
awk
command-line
bioinformatics

「0」と最初の2つのフィールドを除くcsvファイルのすべてのテキストを1に変換するには?

いくつかの大きな .csv ファイルがあり、このファイルをバイナリ (1 と 0) 形式に変換したいと思います。最初の2つのフィールドを除いて、テキストを含むすべてのセルは1になり、0は0のままです。 head Test.csv Iss1,1,0,0,Hsapiens-I34,0,0,0,Mmusculus-H01,0,0 Iss1,11,0,Scerevisiae-U09,Hsapiens-I05,0,0,0,0,0,0 Iss1,21,0,0,Hsapiens-I05,0,0,0,Hsapiens-I31,0,0 Iss1,31,0,0,Mmusculus-H13,0,0,0,0,0,Hsapiens-I31 Iss1,41,0,Scerevisiae-U09,0,0,0,0,0,0,Hsapiens-I21 Iss1,51,0,0,0,0,0,0,Scerevisiae-U25,0,Hsapiens-I21 Iss1,61,0,0,Hsapiens-I34,0,0,0,Mmusculus-H13,0,0 予想される結果は head Test.csv Iss1,1,0,0,1,0,0,0,1,0,0 Iss1,11,0,1,1,0,0,0,0,0,0 Iss1,21,0,0,1,0,0,0,1,0,0 Iss1,31,0,0,1,0,0,0,0,0,1 Iss1,41,0,1,0,0,0,0,0,0,1 Iss1,51,0,0,0,0,0,0,1,0,1 Iss1,61,0,0,1,0,0,0,1,0,0 ここで、ファイル内のすべてのテキストは1に変換されます。 誰もがこの問題を克服する方法についてアドバイスをすることができれば非常に感謝します。 ありがとう

Admin

パターン間の文字列を識別し、文字列が見つかるとパターン間の領域全体を印刷します。 awkを使用する方が良い
text-processing
awk
xml
bioinformatics

パターン間の文字列を識別し、文字列が見つかるとパターン間の領域全体を印刷します。 awkを使用する方が良い

同様の質問がありますが、私が経験している問題を完全に解決することはありません。 簡単に言えば、探している文字列を含むすべてのブロックを印刷する必要があります。各ブロックの開始行には次のものが含まれます。 <アイテムバージョン= 詳しくは下記をご覧ください。 パターン領域(ブロック)内で特定の文字列が認識されたら、パターン間の領域全体(ブロック)を印刷する大容量ファイル(数十万行)を検索したいと思います。 以下を使用して、パターン間の領域全体を印刷できることを知っています。ここで、これらのブロックの始まりと終わりの識別子は「/ TSPAN6 T245 TM4SF6 TSPAN-6 上記の実際の形式では、特定の文字列の名前と同義語をチェックしているので、「TSPAN6」が見つかると、対応するブロックが印刷されます。各ブロックには数千の行があるので、以下はブロック内の文字列一致に基づいてブロックを印刷する方法を構成するミニバージョンです。 以下は、文字列が「MEMSAT」と「TNMD」の 入力例の場合の例です。 TSPAN6 T245 TM4SF6 TSPAN-6 TNMD BRICD4 ChM1L myodulin TEM tendin 出力例: TNMD BRICD4 ChM1L myodulin TEM tendin

Admin

iproute2 ss出力からリスニングTCPポートを抽出する
text-processing
awk

iproute2 ss出力からリスニングTCPポートを抽出する

プロセス(例:apache2)がリッスンしているポートを見つけ、この(tcp)ポート番号のみをfile1.txtファイルに印刷したいと思います。 私が試したコマンドは次のとおりです。 $ ss -atpln | grep 'apache2' | awk -F':' '{print $2}' > file1.txt これは私の出力です(file1.txtで): 80 * 私の出力が「*」ではなくポート番号(80)であることをどのように確認できますか? OPに提供される重要な情報を追加するためにEd Mortonによって編集されましたコメント: 自分のシステムで次の順序をメモしてください。 $ ss -atpln | grep apache2 出力は次のとおりです LISTEN 0 511 *:80 *:* users:(("apache2",pid=55338,fd=4),("apache2",pid=55337,fd=4),("apache2",pid=856,fd=4))

Admin

連続したパターンを一致させて他のパターンの後に挿入する方法
text-processing
awk
sed

連続したパターンを一致させて他のパターンの後に挿入する方法

2行のファイルがあります。 1, output /test here 2, output /test here 私はこれを次のように変更したいと思います: 1, output /test 1 here 2, output /test 2 here 前の文字列を,この文字列の末尾にコピーします/test。 awkまたはを使用してこれをどのように実行できますかsed?

Admin

パターンで始まる行を選択的に連結する方法 [重複]
shell-script
text-processing
awk
sed
join

パターンで始まる行を選択的に連結する方法 [重複]

この質問にはすでに答えがあります。: sedを使用してパターン付きの行を次の行にリンクするには? (回答4個) 閉鎖3年前。 この記事は次のように表示されます。前の記事のフォローアップ。 入力ファイルは次のとおりです。 module ABC x(a,b,c) module DEFG y(d,e,f, g,h,i) module HIJKL z(j,k,l) 出力ファイルは次のようにする必要があります。 module ABC x(a,b,c) module DEFG y(d,e,f, g,h,i) module HIJKL z(j,k,l) 提供されたソリューションでアスタリスクをワイルドカードとして使用してみました。メモ投稿しかし、期待どおりに動作しません。 付録 綿密に調査した結果、これらのソリューションが実際に初期の作業にも役立つことがわかりました(@steeldriverが指摘したように)。問題は、ファイルがDOS / Windowsプラットフォームで作成され、^M予期しない文字が出力に挿入され、後続の処理がめちゃくちゃになることです。これで入力ファイルに対してdos2unixを実行しましたが、問題は消えました(つまり、以前のソリューションも私にとって効果的でした)。 重複しているため、この投稿を閉じることをお勧めします。

Admin

パターンに基づく検索後の数と行の印刷
text-processing
awk
sed
scripting
uniq

パターンに基づく検索後の数と行の印刷

複数のログファイルにこのような行があります。 ファイル1: Line 203:Caused by :arithmatic overflow exception Line 204:at com.abc.java ファイル2: Line 105:Caused by : ???String out of bound exception Line 206 :at com.def.java 上記のパターンを含むファイルがたくさんあります。これらすべてのファイルで203行と204行の組み合わせの発生回数を計算する方法

Admin

sedが1行ではなく2行を削除しましたが、なぜですか? [コピー]
bash
text-processing
sed
variable

sedが1行ではなく2行を削除しましたが、なぜですか? [コピー]

この質問にはすでに答えがあります。: シェル: コマンド置換で末尾の改行 ('\n') を保持します。 (回答4個) Bash オプションを使用すると、コマンド置換で末尾の改行が維持されます。 (回答3個) 閉鎖3年前。 このテキストファイル()から行を削除しようとしていますfoo.txt。 cat mouse animals: 2 最後から2行を削除したいです。 ‎ animals: 2 だから私はついに次の結論に達しました。 cat mouse ただし、これを使用すると、variable="$(sed '$d' foo.txt)"1つだけ指定しましたが、両方の行が削除されたように見えます$d。これにより、私が望む結果を得ることができますが、なぜこれが起こるのか疑問に思うことはできません。出力を変数に保存したくない場合は、次のような出力が表示されます。 user$ sed '$d' foo.txt cat mouse user$ 奇妙なことは、を使用するとその行$ sed '$d;$d' foo.txtだけがanimals: 2削除され、その前の改行文字は削除されないことです。 誰でも私のためにこの謎を解くことができますか?ありがとうございます。 参考までに、この例ではBSD sedを使用しました。

Admin

ファイルの各列で特定の数の発生回数を計算する方法は?
bash
text-processing
python

ファイルの各列で特定の数の発生回数を計算する方法は?

負のリストを含むtxtファイルと3つの数値列を含むcsvファイルがあります。 csvファイル内のすべての数字はtxtファイルに含まれ、txtファイルにはcsvファイル内の数字のみが含まれます。 以下は簡単な例です。 cat list.txt -14.5 -12.3 -10.1 -10.0 -9.9 -9.8 -7.3 -0.1 cat numbers.csv -14.5,-14.5,-12.3 -14.5,-12.3,-10.1 -10.0,-9.9,-10.1 -7.3,-9.8,-10.1 -7.3,-7.3,-10.1 -0.1,-0.1,-9.8 list.txt各列に各数字が何回表示されるかを知る必要がありますnumbers.csv。 上記の例で予想される結果は次のとおりです。 -14.5: 2,1,0 -12.3: 0,1,1 -10.1: 0,0,4 -10.0: 1,0,0 -9.9: 0,1,0 -9.8: 0,1,1 -7.3: 2,1,0 -0.1: 1,1,0 見つけることができるショートカットがありますか?私はbashとpythonの初心者です。

Admin

時間とファイル名の間の各スペースに「;」(セミコロン)を追加します。
text-processing
sed

時間とファイル名の間の各スペースに「;」(セミコロン)を追加します。

以下はリストです。 07:41 0840228.32P379995.de472.netzwerk.com.br,S=307582,W=311813:2, 04:11 1574312.116821186.der472.netzwerk.com.br,S=301166,W=307582:2, 06:22 1540376.98P379995.der472.netzwerk.com.br,S=311813,W=312391:2, 03:39 8712441.254782468.de472.netzwerk.com.br,S=307387,W=311615:2, 07:35 9841630.971395138.de472.netzwerk.com.br,S=303039,W=303039:2, 01:16 2369857.123688174.de472.netzwerk.com.br,S=298927,W=311615:2, 01:08 1845871.564387663.de472.netzwerk.com.br,S=304067,W=305586:2, 08:07 1236913.325890982.de472.netzwerk.com.br,S=299941,W=304067:2, 05:70 1086215.397447162.de472.netzwerk.com.br,S=306747,W=309789:2, 06:41 9513575.225890982.de472.netzwerk.com.br,S=305586,W=306747:2, 01:70 1965849.125749892.de472.netzwerk.com.br,S=313423,W=309171:2, 09:12 9564136.687415393.de472.netzwerk.com.br,S=309171,W=313423:2, 時間とファイル名の間の各スペースに ";"(セミコロン)を追加して次の結果を生成できますか? 07:41;0840228.32P379995.de472.netzwerk.com.br,S=307582,W=311813:2, 04:11;1574312.116821186.der472.netzwerk.com.br,S=301166,W=307582:2, 06:22;1540376.98P379995.der472.netzwerk.com.br,S=311813,W=312391:2, 03:39;8712441.254782468.de472.netzwerk.com.br,S=307387,W=311615:2, 07:35;9841630.971395138.de472.netzwerk.com.br,S=303039,W=303039:2, 01:16;2369857.123688174.de472.netzwerk.com.br,S=298927,W=311615:2, 01:08;1845871.564387663.de472.netzwerk.com.br,S=304067,W=305586:2, 08:07;1236913.325890982.de472.netzwerk.com.br,S=299941,W=304067:2, 05:70;1086215.397447162.de472.netzwerk.com.br,S=306747,W=309789:2, 06:41;9513575.225890982.de472.netzwerk.com.br,S=305586,W=306747:2, 01:70;1965849.125749892.de472.netzwerk.com.br,S=313423,W=309171:2, 09:12;9564136.687415393.de472.netzwerk.com.br,S=309171,W=313423:2,

Admin

他のファイルから正規表現で終わる行を削除する
shell-script
text-processing

他のファイルから正規表現で終わる行を削除する

事件がありますこれに似てしかし、いくつかの違いがあります。 コンテンツリストA: .co .best.co .com .test.server.cloud.us-east.amazonaws.com .com.co .abc.com.co .jp .def.museum.hiroshima.jp .net .xyz.xxx.yyy.net .exe .xyz.exe # and anything else i want to add コンテンツリストB: .bar .co .com .server.cloud.us-east.amazonaws.com .com.co .jp .museum.hiroshima.jp .net .xxx.yyy.net # and anything else i want to add 私が望むのは、「listB」に現れるもので終わらない行を「listA」から削除して重複することです。 希望の出力: .best.co .test.server.cloud.us-east.amazonaws.com .abc.com.co .def.museum.hiroshima.jp .xyz.xxx.yyy.net いくつかのコマンドを試しましたが、うまくいきません。 grep -vi -f <(sed 's:^\(.*\)$:\\\1\$:' listB ) listA > out grep -v -f <(sed 's/$/$/' listB ) listA > out 事前にありがとう

Admin

unixコマンドから行末まで「[0-9]」以降の内容をすべて抽出します。
text-processing

unixコマンドから行末まで「[0-9]」以降の内容をすべて抽出します。

次の項目を含むファイルがあるとします。 5. variable1: 10. variable7: 230. variable21803: 「5」などを使わずに、すべての変数を出力にしたいと思います。私が試したことは grep -Po '(?<=^[0-9] )[.\n]+ ただし、結果は返されません。私はUNIXに初めて触れたので、助けてくれてありがとう。 以下は、前にスペースがある更新されたテストです。 ranodm text 1. variable1: 2. variable10: 3. variable302:

Admin