タグ付けされた質問 「text-processing」

プログラム、スクリプトなどによるテキストの操作または検査

5
行の順序を維持しながら重複行を削除する
[root@server]# awk '!seen[$0]++' out.txt > cleaned awk: (FILENAME=out.txt FNR=8547098) fatal error: internal error Aborted [root@server]# 「サーバー」には、8ギガバイトのRAM + 16ギガバイトのスワップ、x> 300ギガバイトの空き領域、amd64、デスクトップCPUがあります。Scientific Linux 6.6。LOADを作成するために他に何も実行されません。数秒後にawkは異常終了します。out.txtは約1.6ギガバイトです。GNU Awk 3.1.7。 質問:行の順序を維持しながら重複行を削除するにはどうすればよいですか?大文字と小文字の区別も重要です。例:「A」と「a」は2つの異なる行で、保持する必要があります。ただし、「a」と「a」は重複しています。最初の1つだけが必要です。 答えは何でも構いません.. awkがこれに向いていない場合.. perl / sed ..問題は何でしょうか [root@server]# ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file …

9
ファイルの特定のセクションをフィルターまたはパイプする
入力ファイルにはいくつかのセクションがあり、開始タグと終了タグで区切られています。次に例を示します。 line A line B @@inline-code-start line X line Y line Z @@inline-code-end line C line D このファイルに変換を適用して、行X、Y、Zを何らかのコマンド(nlなど)でフィルター処理し、残りの行は変更せずに通過させます。nl(number行)は行をまたいで状態を蓄積するため、行X、Y、Zのそれぞれに適用されるのは静的な変換ではないことに注意してください。(編集:それがあることが指摘されたnlモードでの缶の仕事が蓄積状態を必要としないが、私はちょうど使用していますnl質問を簡素化するための例として、実際にはコマンドは、より複雑なカスタムスクリプトです。。私が本当に探していますどのようなforは、入力ファイルのサブセクションに標準フィルターを適用する問題の一般的な解決策です) 出力は次のようになります。 line A line B 1 line X 2 line Y 3 line Z line C line D ファイルには、変換を必要とするこのようなセクションがいくつか存在する場合があります。 更新2私はもともと、たとえば次のようなセクションが複数ある場合に何が起こるかを指定しませんでした。 line A line B @@inline-code-start line X line Y line Z @@inline-code-end …

3
sedマッチパターンN回
ファイルをそれぞれ2ワードのチャンクに分割します。 $cat tmp word1 word2 word3 word4 word5 word6 word7 $sed -e 's/word. word. /&\n/g' tmp word1 word2 word3 word4 word5 word6 word7 $sed -e 's/word. \{2\}/&\n/g' tmp word1 word2 word3 word4 word5 word6 word7 私は最後のコマンドがその前のものと同じ結果を与えると予想しました。なにが問題ですか?

5
sedによるパターンマッチングパターンの置換
ソースコードがいくつかのファイルに広がっています。 それはabcdef私が置き換える必要があるパターンを持っていpqrstuvxyzます。 パターンはAbcdef(センテンスケース)である可能性があり、それからに置き換える必要がありますPqrstuvxyz。 パターンはAbCdEf(トグルケース)である可能性があるため、で置き換える必要がありますPqRsTuVxYz。 つまり、ソースパターンの大文字と小文字を一致させ、適切な宛先パターンを適用する必要があります。 sedまたは他のツールを使用してこれを達成するにはどうすればよいですか?

2
このxargsコマンドが機能しないのはなぜですか?
すべての.sh拡張子を削除したかったので、次のようにしました。 ls *.sh | xargs -I {} mv {} `basename {} .sh` ただし、機能しませんが、basename変更されていないファイル名を返すように動作します。 なぜそのように振る舞うのですか? たとえば、これは機能します: ls *.sh | xargs -I {} echo `basename {}.jpg .jpg`; 編集: 解決策:単一引用符は`basename ...`、コマンドが実行される前にシェルによる評価を防ぎます。 ls *.sh | xargs -I {} sh -c 'mv {} `basename {} .sh`'



3
tail -f、ログが3秒間アイドルになった後に改行を挿入しますか?
を行うときにtail -f error.log、3秒間ファイルに何も適用されなかった後にプログラムで改行を挿入する方法は? (明らかに、1つの改行が追加されたら、テキストの他の行がログファイルに追加されるまで、他の改行は追加されません) たとえば、これらの行はerror.logに追加されます: foo bar boo [[wait 4 seconds]] 2far 2foo 2bar 2boo [[wait 40 seconds]] 2far これはコンソールの出力です: foo bar boo 2far 2foo 2bar 2boo 2far

7
ファイルのすべての行が異なるファイルにあるかどうかを確認します
私は2つのファイルを取得しました。約1 000行のfile1と数百行のfile2です。file2のすべての行がfile1にあるかどうかを確認したい。つまり:∀lineℓ∈file2:ℓ∈file1 これらの記号の意味や「file1にfile2のすべての行が存在するかどうかを確認する」という意味が誰にもわからない場合:どちらのファイルのいくつかの同等の行も、ファイルが要件を満たしているかどうかをチェックが返すかどうかには影響しません。 どうすればいいですか?

7
-vをgrepし、一致後の次の行を除外する方法は?
grepの正規表現に一致する各行に対して2行を除外するにはどうすればよいですか? これは私の最小限のテストです: SomeTestAAAA EndTest SomeTestABCD EndTest SomeTestDEFG EndTest SomeTestAABC EndTest SomeTestACDF EndTest そして、明らかに私は、例えばgrep -vA 1 SomeTestAAうまくいかないことを試みました。 望ましい出力は次のとおりです。 SomeTestABCD EndTest SomeTestDEFG EndTest SomeTestACDF EndTest


4
各行の一部を個別のファイルに出力します
このようなファイルがあります: a AGTACTTCCAGGAACGGTGCACTCTCC b ATGGATTTTTGGAGCAGGGAGATGGAATAGGAGCATGCTCCAT c ATATTAAATGGATTTTTGGAGCAGGGAGATGGAATAGGAGCATGCTCCATCCACTCCACAC d ATCAGTTTAATATCTGATACGTCCTCTATCCGAGGACAATATATTAAATGGA e TTTGGCTAAGATCAAGTGTAGTATCTGTTCTTATAAGTTTAATATCTGATATGTCCTCTATCTGA a.seqsequenceを含むファイルを作成したいAGTACTTCCAGGAACGGTGCACTCTCC。同様にb.seqが含まれていますATGGATTTTTGGAGCAGGGAGATGGAATAGGAGCATGCTCCAT。つまり、Column1を拡張子付きの出力ファイル名として使用し.seq、それに対応するcolumn2シーケンスを含める必要があります。perlスクリプトを書くことでこれを行うことができますが、コマンドラインに何かあれば役立ちます。すぐに聞いてほしい。

2
grep -vと同等のPythonは何ですか?
私は好きgrep -vです。いつも使っています。しかし、私はpythonでテキスト処理も行っていますが、私が欠けている重要なことがあります。 通常、私grep -vはテキストから余分なものを取り除くために使用します。 例えば、 $ grep -v '[a-z]' # (I manually review this output to confirm that I don't want those lines) $ grep '[a-z]' > linesiwanted しかし、Pythonで正規表現の補集合をどのように一致させるのでしょうか?たとえば、\w?の補数

3
「find -exec」を別の「find -exec」内にネストすることは可能ですか?
次のようなものは私が後だ何何ですが、私のコードは仕事、私は脱出どんなにしない{}と+ ; find ./ -maxdepth 1 -type d -name '.*' -exec \ find {} -maxdepth 1 -type f -name '*.ini' -exec \ md5sum \{\} \\; \; このUnix-&-Linuxの質問を見た後、次のコードが機能することがわかりましたが、それ自体はfindをネストしていません。 find ./ -maxdepth 1 -type d -name '.*' \ -exec bash -c 'for x; do find "$x" -maxdepth 1 -type f -name "*.ini" …


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.