タグ付けされた質問 「sed」

sedは、テキストをフィルタリングおよび変換するためのコマンドラインストリームエディターです。

6
bash文字列で始まる行を見つける
たくさんのファイルがあり、特定の文字列で始まる連続した行が含まれているファイルを見つけたい。 たとえば、次のファイルの場合: Aaaaaaaaaaaa Baaaaaaaaaaa Cxxxxxxxxx Cyyyyyyyyy Czzzzzzzzz Abbbbbbbbbbb Bbbbbbbbbbbb Caaaaaa Accccccccccc Bccccccccccc Cdddddd Ceeeeee 「C」で始まる行が複数あるので、このファイルをコマンドで見つけたいと思います。 たとえば、次のファイルの場合: Aaaaaaaaaaaa Baaaaaaaaaaa Cxxxxxxxxx Abbbbbbbbbbb Bbbbbbbbbbbb Caaaaaa Accccccccccc Bccccccccccc Cdddddd 「C」で始まる行は常に1つあります。このファイルは必要ありません。a grepやa の使用を考えましたsedが、正確な方法がわかりません。多分正規表現^C.*$^Cかそのようなものを使用しています。何か案が ?
10 bash  sed  grep  string 

2
デフォルトで拡張正規表現モードを使用してsedにならないのはなぜですか?
私はsedを使用しています。私の知る限りでは正しい正規表現を使用していましたが、sedは何もしませんでした。私が\s+理解できないsed を使用していたことがわかりました、そして私が[ ]+それに切り替えたときはうまくいきました。 要約すると、私は正規表現を作成しました。それを機能させるには、ほとんどすべてをエスケープし\s、空白を削除する必要がありました。これらすべてを回避するモードがあるようです-rので、私は尋ねたかった: なぜ-rsedのデフォルトモードではないのですか?すべてを脱出するためになぜそんなに多くのトラブルに行かなければならなかったのですか? manオプションが--posixあり、「POSIX.2 BREをサポートする必要がある」と述べています。これは何を意味しますか?NFA / DFAモード?

3
2つの特定の文字列間のテキストを削除する
次のようなファイルがあります。 mime PI Name: ISHO SUCCESS RATE RT, Value: 95.663826 scr PI Name: RRC Access Failures due to UU, Value: 0.13394141 prog PI Name: RRC Access Failures due to UU, Value: 0.16077702 sch PI Name: RRC Access Failures due to UU, Value: 0.11781933 PIまでテキストを削除したいValue:。私は試した sed '/<PI>/,/<\/Value:>/d' 何か助けは?

3
5行目から始まる空行を削除する方法
私はこれを持っています: sed -i '/^$/d' temp_spec.rb これは空白行を取り除き、うまく機能します。これを5〜999行(または理想的には5からファイルの終わりまで)の行でのみ実行するにはどうすればよいですか。 私は試した: sed -n5,999 -i '/^$/d' temp_spec.rb sed '5,999!d/^$/d' temp_spec.rb しかしどちらも機能しませんでした(エラーなし)。
10 sed 

4
3文字おきに文字を追加するsedワンライナーを作成するにはどうすればよいですか?
だから、私はこのような文字列を持っています: AUGGCCAUGGCGCCCAGAACUGAGAUCAAUAGUACCCGUAUUAACGGGUGA そして、文字列を「+」記号で区切られた3文字のチャンクに分割したいと思います。 AUG+GCC+AUG+GCG+CCC+AGA+ACU+GAG+AUC+AAU+AGU+ACC+CGU+AUU+AAC+GGG+UGA そして、私は私の良き友人とそれをしたいですsed。 私は試した cat codons | sed -r 's/([A-Z]\{3\})/\1\+/g' ...成功しませんでした。 どのsedコマンドを使用できますか?

3
`sed`とファイルにhere-docを使用する
ヒアドキュメントをsedコマンドに使用し、読み取るファイルと出力ファイルを提供したいと思います。 私は、高度なBashスクリプトガイドのヒアドキュメントを見てきましたが、ヒアドキュメントを使用する際の通常の引数については何も触れていません。可能ですか? 私は次のようなことを達成したいと思います: #!/bin/bash OUT=/tmp/outfile.txt IN=/my_in_file.txt sed $IN << SED_SCRIPT s/a/1/g s/test/full/g SED_SCRIPT > $OUT; どんな助けでも本当に感謝しています。

5
Sed:改行ごとにパターンを置き換えますか?
sed2回目に発生するたびにパターンを置き換えるように指示する方法はありますか?または、少なくとも1行おきに?(確かに、それはスクリプトでsed可能ですが、それができるかどうか自分に尋ねていました)。 編集する 見つけた sed -e "s/pattern/replacement/g;n" しかし、それは2回目ではなく、すべての最初の発生を置き換えました。 例 入力ファイル: I have a pattern in each line Also the second line has the pattern Another pattern here And -- you guess it -- a pattern 望ましい出力: I have a pattern in each line Also the second line has the replacement Another …
10 sed  replace 


2
ファイル内の発生ごとに複数の行を削除するにはどうすればよいですか?
この857835行ファイルがあり、次のようなものが含まれているとします。 a1 rubbish1 rubbish2 rubbish3 rubbish4 a1 rubbish5 rubbish6 rubbish7 rubbish8 そしてa1、次の行(rubbish1およびrubbish5この例では)の出現をすべて削除したいと思います。どうすればいいのですか? 私はgrep 'a1' -v -A1役に立たないように試みました、そして私のsed skillzは本当に素晴らしくありません:} 今回、Google-fuは私を助けてくれませんでした。誰か助けてください!

4
複数のファイルにテキスト行を追加する
それで、ディレクトリにたくさんのファイルがあり、それぞれにテキスト行を挿入する必要があります。それらは基本的に次のフォーマットを持っています: <VirtualHost *:80> ServerAdmin gabe@localhost DocumentRoot /var/www/test1 ServerName test1.local ServerAlias test1 <Directory "/var/www/test1"> Options All AllowOverride All </Directory> </VirtualHost> そして、閉会の前に行を挿入したいと思います </ VirtualHost>鬼ごっこ。私の最初の仮定は、おそらくsedを使用してこれを実行できるはずであり、おそらくそのタグを一致させて置き換えることです。私はこれを試み始めるつもりですが、誰かがこれを行うための既存の方法を持っているなら、私はそれを聞いてみたいです。

6
ファイル内のパターンのN番目の出現のみを置き換える方法は?
sedコマンドを使用してファイル内の3番目の文字列を置き換える方法。 例: 唯一の第三の発生を変更isするusファイルに。 私の入力ファイルには以下が含まれます: hai this is linux. hai this is unix. hai this is mac. hai this is unchanged. 私は出力が期待されています: hai this is linux. hai thus is unix. hai this is mac. hai this is unchanged.


6
正規表現でファイルから複数の行を取得する方法は?
正規表現でファイルから複数の行を取得する方法は? 正規表現で複数の行を取得したり、複数の行を変更したりすることがよくあります。事例: 私はXML / SGMLファイルの一部を読み込もうとしています(形式が正しくないか、予測可能な構文であるとは限らないため、正規表現は適切なパーサーよりも安全です。さらに、これを完全に実行できるようにしたいと思います。いくつかのキーワードだけがわかっている非構造化ファイル)(SolarisおよびLinuxで実行される)シェルスクリプト内。 XMLの例: <tag1> <tag2>bar</tag2> </tag1> <tag1> <tag2>foo</tag2> </tag1> これから私は<tag1>それがその中にfooどこかに含まれている場合に読みたいと思います。 以下のような正規表現は、(<tag1>.*?foo.*?</tag1>)右側の部分が、のようなツール与えるべきであるgrepとsed、単一のラインを持つ私のためだけの仕事を。どうすれば入手することができますか <tag1> <tag2>foo</tag2> </tag1> この例では?
10 shell  sed  grep 

4
UNIXで5日より古いファイルを削除する(タイムスタンプではなくファイル名の日付)
5日以上経過したログファイルをディレクトリから削除したい。ただし、削除はファイルのタイムスタンプに基づくべきではありません。ファイルの名前に基づいている必要があります。例今日の日付が2012年7月5日で、ディレクトリのような名前の10個のファイルが含まれているためにABC_20120430.log、ABC_20120429.log、ABC_20120502.log、ABC_20120320.logなどのIをファイル名から日付を抽出してファイルを削除できるようにしたいです。
10 bash  sed  rm 

3
非常に大きなファイルの文字列を置き換える
以下と同じ形式で、分離文字のない非常に長い一連のURLがあります。 http://example.comhttp://example.nethttp://example.orghttp://etc... 各URLを新しい行に配置します。sedを使用して「http://」のすべてのインスタンスを「\ nhttp://」に置き換えることでこれを試みました sed 's_http://_\nhttp://_g' urls.txt しかし、セグメンテーション違反が発生します(メモリ違反)。ファイルのサイズ(100 GBを超える)が原因で、sedが何らかの制限を超えていることが推測できます。 ファイルをいくつかの小さなファイルに分割して処理することもできますが、 "http://"のインスタンスはすべてそのままにしておく必要があります。 これを行うより良い方法はありますか?

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