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

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

6
XYより短い線を削除する方法は?
2048文字より長い行を削除する方法についての質問を見つけました: XYより長い場合に行を削除する方法は? Q:しかし、どのようにして4文字より短い行を削除できますか?したがって、ファイル内の長さが1または2または3の行を削除します。 更新:多くの良い答えをありがとう、しかし、私は1つだけをOKとマークすることができます


3
sedを使用して、solarisのコマンドからの出力に色を付ける
Linuxとsolarisの両方で動作するkshスクリプトがあります。特定のコマンドの出力を色付けしようとしています。Linux(特にRHEL6)では動作しますが、solaris(SunOS 5.10)では動作しません。 Linuxのコマンド(出力「テスト」は正しく赤で表示されます): [amartin@linuxbox:~]$ echo "test" | sed 's,.*,\x1B[31m&\x1B[0m,' test solarisのコマンド(出力「テスト」は色付けされていません): [amartin@sunbox:~]$ echo "test" | sed 's,.*,\x1B[31m&\x1B[0m,' x1B[31mtestx1B[0m 出力に生のコードなしで、出力が赤になるようにこのコマンドを作成する方法はありますか?「echo」コマンドを変更することはできません。これは、実際に実行しているコマンドの入力にすぎないためです。

6
すべての改行の前に改行を追加する方法は?
改行のみに使用するファイルがありますが、改行ごと\nに必要\r\nです。これどうやってするの? たとえば、Vimでを使用して解決しました:%s/\n/\r\n/gが、スクリプトまたはコマンドラインアプリケーションを使用したいと思います。助言がありますか? sedまたはgrepで調べてみましたが、エスケープシーケンスの回避策にすぐに混乱しました(これらのコマンドは少し緑です)。 興味がある場合、アプリケーションは私の質問/回答に関連しています
28 sed  grep  newlines 

3
sed -i '1d'は何をしますか?
これがsedテキストファイルを操作するコマンドであることを理解しています。 私のグーグルからは-i、ファイル自体で操作を実行することを意味するようですが、これは正しいですか? どう'1d'?
28 sed 

4
特定の範囲の行の長さを「grep」する方法は?
注:この質問は、このQ&Aを補完するものです。特定の範囲ではなく、行の長さを「grep」するにはどうすればよいですか? テキストファイル(改行で区切られたワードリスト)から行を取得する必要があるのは、長さが3文字以上で10文字以下の範囲です。 例: 入力: egyezményét megkíván ki alma kevesen meghatározó 出力: megkíván alma kevesen 質問:どうすればこれを行うことができbashますか?
28 bash  sed  grep  perl 


5
パターンの上の行の範囲をsed(またはawk)で削除します
パターンbananaを持つ行とその後の2行を削除する次のコードがあります。 sed '/banana/I,+2 d' file ここまでは順調ですね!しかし、私はそれを前 bananaに2行削除する必要がありますが、「マイナス記号」または何でも取得することはできません(何をgrep -v -B2 banana fileすべきかと同様ですが): teresaejunior@localhost ~ > LC_ALL=C sed '-2,/banana/I d' file sed: invalid option -- '2' teresaejunior@localhost ~ > LC_ALL=C sed '/banana/I,-2 d' file sed: -e expression #1, char 16: unexpected `,' teresaejunior@localhost ~ > LC_ALL=C sed '/banana/I,2- d' file sed: -e …

5
GNUまたはBSD Sedの正規表現の代替/演算子(foo | bar)
私はそれを機能させることができないようです。GNU sedのドキュメントでは、パイプをエスケープすると書かれていますが、それは機能せず、エスケープなしでストレートパイプを使用することもできません。括弧を追加しても違いはありません。 $ echo 'cat dog pear banana cat dog' | sed 's/cat|dog/Bear/g' cat dog pear banana cat dog $ echo 'cat dog pear banana cat dog' | sed 's/cat\|dog/Bear/g' cat dog pear banana cat dog

11
単一の改行のみを置き換えるより良い方法が必要ですか?
私は通常LaTexにコンパイルするため、または改行が無視される他の形式で書くので、私は文ごとに1行を書く習慣があります。空白行を使用して、新しい段落の開始を示します。 これで、このスタイルで記述されたファイルがあり、プレーンテキストとして送信したいだけです。単一の改行をすべて削除したいが、二重の改行はそのままにしておきたい。これは私がやったことです: sed 's/$^/NEWLINE/' file.txt | awk '{printf "%s ",$0}' | sed 's/NEWLINE/\n\n/g' > linebreakfile.txt これは空の行をファイルに表示されないと確信しているいくつかのテキストで置き換えます:NEWLINEそして、それはawkですべての改行を取り除きます(いくつかのウェブサイトでそのトリックを見つけました)そして、NEWLINEsを必要な2つの改行で置き換えます。 これは非常に単純なことを行うための長い方法のようです。もっと簡単な方法はありますか?また、複数のスペース(何らかの理由で時々入り込む)を単一のスペースに置き換える方法があれば、それも良いでしょう。 私はemacsを使用しているので、いくつかのemacs固有のトリックがあれば良いのですが、純粋なsedバージョンまたは純粋なawkバージョンが必要です。

7
それらを含む2つのパターン間の最初の出現を選択する方法
それらを含む2つのパターン間で最初の出現を選択するにはどうすればよいですか。sedまたはを使用してくださいawk。 私が持っています: text something P1 something content1 content2 something P2 something text something P1 something content3 content4 something P2 something text P1とP2の間に最初に現れる行が必要です(P1行とP2行を含む)。 something P1 something content1 content2 something P2 something

1
左括弧をsedに置き換える方法は?
(ファイル内の一部の文字に置き換える必要があり、できません。\(sedでのグループ化に使用され\\(、sedで使用した場合\(、単なるとしてではなく文字として処理しました(。私には難しいケースのようです。
27 sed 

3
sedキャプチャグループが機能しない
私はフォーマットの文字列を持っています[0-9]+\.[0-9]+\.[0-9]。最初、2番目、3番目の数字を別々に抽出する必要があります。私が理解しているように、キャプチャグループにはこれが可能なはずです。私はsed "s/\([0-9]*\)/\1/g、最初の番号sed "s/\([0-9]*\)/\2/gを取得し、2番目の番号sed "s/\([0-9]*\)/\3/gを取得し、3番目の番号を取得するために使用できるはずです。ただし、それぞれの場合、文字列全体を取得しています。なんでこんなことが起こっているの?
27 sed 

8
grep-inverse-matchと「前」と「後」の行を除外する方法
次のエントリを含むテキストファイルを考えます。 aaa bbb ccc ddd eee fff ggg hhh iii パターン(例fff)が与えられた場合、上記のファイルをgrepして出力を取得したいと思います。 all_lines except (pattern_matching_lines U (B lines_before) U (A lines_after)) たとえば、B = 2およびの場合、A = 1パターン=の出力fffは次のようになります。 aaa bbb ccc hhh iii grepまたは他のコマンドラインツールでこれを行うにはどうすればよいですか? 注意してください、私がしようとするとき: grep -v 'fff' -A1 -B2 file.txt 欲しいものが得られません。私は代わりに以下を取得します: aaa bbb ccc ddd eee fff -- -- fff ggg hhh …

9
最初の発生のみをsedに置き換えたい
元のファイル claudio antonio claudio michele 「claudia」で「claudio」の最初の出現のみを変更したいので、ファイル結果 claudia antonio claudio michele 私が試してみました sed -e '1,/claudio/s/claudio/claudia/' nomi しかし、グローバル置換を実行します。なぜですか?
26 sed 

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