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

「sed」(「ストリームエディタ」)は、テキストファイルを解析および変換するUnixユーティリティです。

3
sedを使用してU + 200B(ゼロ幅スペース)を削除する方法
ゼロ幅のスペースが散在する非常に大きなファイルがあります。を使用して開いて編集するには時間がかかりすぎるviため、を使用してキャラクターのすべてのインスタンスを削除したいと思いますsed。問題は、キャラクターのマッチング方法がわからないことです!私が使って試してみました\u200B、\x{200b}。何か案は? CentOS 5を実行している場合は、それがまったく役立つ場合。
15 regex  unicode  sed 

3
Python / AWK / SEDでマークダウンドキュメントの目次を作成するにはどうすればよいですか?
次のマークダウンドキュメントがあります。 Heading-a ========== ---text--- Heading-b ------------ --- text --- Heading-c ---------- --- text--- Heading-d ======= --- text---- Heading-e --- ... LaTexの場合と同様に、クリック可能な目次を作成したいのですが、これを行うツールが見つかりません。 ツールは、番号1 Heading-aと番号1.1 を割り当てるように、「H1」見出しと「H2」見出しを収集する必要があります。からHeading-b1.2 にHeading-c、2。にHeading-d、2.1。Heading-eように、我々はコンテンツの以下の表を取得する必要がありますよう: 1. Heading-a 1.1. Heading-b 1.2. Heading-c 2. Heading-d 2.1. Heading-e Python / AWK / SEDでこれを行うにはどうすればよいですか?

2
テキストファイルの各行でn番目に出現する文字列を置き換える
スペースで区切られた文字列(2〜5)の大きなテキストファイルがあります。文字列には「 '」または「-」を含めることができます。2つ目のスペースをパイプに置き換えたいと思います。 行くための最良の方法は何ですか? sedを使用して私はこれについて考えていました: sed -r 's/(^[a-z'-]+ [a-z'-]+\b) /\1|/' filename.txt 他の/より良い/より簡単なアイデア?
15 linux  command-line  sed  awk 

2
sedで使用するためにbashスクリプトでスラッシュを適切にエスケープする
2つのフォルダーを同期するときに、rsyncをドライモードで実行し、rsyncの出力にリストされているファイルのサイズを合計して、新しくコピーされるファイルのサイズを決定しようとしています。 現在、親フォルダをファイルのプレフィックスに付けています。sedを使用して行にプレフィックスを付ける方法とsedを使用してエスケープする方法を見つけましたが、これら2つを組み合わせるのに問題があります。 これは私がどこまで到達したかです: source="/my/source/folder/" target="/my/target/folder/" escaped=`echo "$source" | sed -e 's/[\/&]/\\//g'` du `rsync -ahnv $source $target | tail -n +2 | head -n -3 | sed "s/^/$escaped/"` | awk '{i+=$1} END {print i}' これは、bash -x myscript.shから取得した出力です + source=/my/source/folder/ + target=/my/target/folder ++ echo /my/source/folder/ ++ sed -e 's/[\/&]/\//g' + escaped=/my/source/folder/ + …

4
2つの二重引用符の間にsed get substringを使用する
ファイルがあります xyz... rsync: "/home/path/to/file": Permission denied (13) rsync: "/home/path/to/file1": Permission denied (13) rsync: "/home/path/to/file2": Permission denied (13) rsync: "/home/path/to/file3": Permission denied (13) ここで、ファイルパスのみを抽出し、別のファイルに保存します。出力ファイルは次のようなものです。 /home/path/to/file /home/path/to/file1 /home/path/to/file2 /home/path/to/file3 sedまたはawkを使用してこれを行うにはどうすればよいですか? 試しましたsed -n '/"/,/"/p' myfileが、うまくいきません。
14 sed 

2
すべてのファイルの行を再帰的に検索して削除する
私は使用してキーワードの出現をgrepすることができました grep "KeyWord" . -r -n -i -I しかし、KeyWordの発生は大きすぎます。その単語を含むすべての行を削除したいだけです。 私はあちこち検索しましたが、sedはユーティリティのように見えます。誰がどのコマンドがトリックを行うのか教えてもらえますか? ありがとう。
14 grep  sed 

3
「echo $ x | sed…」および「echo $ x | grep…」
私はしばしばスクリプトでこれを見つけます(そして、私は自分でそれを認めなければなりません)。 a=$(echo "$x" | sed "s/foo/bar/") または if echo "$x" | grep -q foo then ... fi 正規表現を含む「foo」を検討してください。 私はそこにあるべきことを感じる-と最も可能性が高いです -フレーズ、この2つのコマンドとのパイプを伴うが、いくつかのよりコンパクトな表現に事をラップしていないものに良い方法。 見つけられません。誰か?
14 shell  grep  sed 

4
文字を再帰的にsedに置き換える方法は?
同じシーケンスを再度繰り返すことなく、文字シーケンスの出現を再帰的に置き換えることは可能ですか? sed次のシナリオのようにを実行すると、前述の出力を取得できます。 $ echo XX | sed -e 's/XX/XoX/g' XoX $ echo XXX | sed -e 's/XX/XoX/g' XoXX $ echo XXXX | sed -e 's/XX/XoX/g' XoXXoX ただし、出力が次の動作に従うことを期待しています。 入力: XX XXX XXXX 期待される出力: XoX XoXoX XoXoXoX sedだけで期待される動作を達成することは可能ですか?
13 linux  bash  regex  sed 

1
Apache configでsedを使用して.htaccessファイルを有効にする
Bashスクリプトを使用してUbuntu Vagrantボックスのプロビジョニングを自動化しようとしています。すべて順調ですが、.htaccessファイルからのオーバーライドを許可するようにApacheを構成するのは困難です。私の設定ファイルには、次のブロックがあります。 <Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> 行うには、すべての私の必要性は置き換えであるAllowOverride NoneとAllowOverride all。これはのタスクのようですが、この設定ファイルにはオーバーライドを許可したくないsed他の<Directory>ブロックがあります。 特定の文字列が他の2つの特定の文字列の間にある場合、sedを使用して特定の文字列を新しい文字列に置き換えるにはどうすればよいですか? つまり、とのAllowOverride None間にある場合にのみ置き換えることができますか?<Directory /var/www/></Directory> 次のコマンドを使用して、興味のあるブロックを取得できます。 sed -n '/<Directory \/var\/www\/>/,/<\/Directory>/p' 000-default

3
Cygwin bash sedがファイルをロックします
sedコマンドでcygwin bashのファイルを変更すると、ファイルがロックされます。 再現: 開いcmdてcd、非ユーザーディレクトリに(fe temp) echo aaa > test.txt テキストエディターで開き、行を追加し、保存してみてください=>作品 %CYGWIN_HOME%\bin\bash -c "sed -i 's/aaa/bbb/' test.txt」 テキストエディターで、別の行を追加し、保存しようとします=> "Access denied" WTF ?! ロックせずにファイルをsedする、またはその後ファイルハンドルを解放するにはどうすればよいですか? Windowsのセキュリティ許可はファイルに完全にねじ込まれているように見えます: 前の許可: 許可後: ただし、ユーザーディレクトリで動作します(Desktop) LockHunterでファイルをチェックしましたが、ファイルをロックするプロセスが表示されません Cygwin FAQは、いくつかのプログラムへの干渉に言及しています。AntivirとCatalystをアンインストールして再起動してみました。 しようとUnxTools(クラッシュ)、GnuWin32は(インプレース置換をサポートしていないSED)、Interexは ... *ため息をつく(インストーラはW7 Proがサポートしていません)*
12 windows  bash  sed  cygwin 

3
文字列内の最初の既知の文字をsedで削除します
文字列内の最初の既知の文字をsedで削除するにはどうすればよいですか? たとえば、文字列 "@ ABCDEFG1234"の最初の文字(@)を削除したいとします。 最初の文字として「@」が存在するかどうかを確認したいのですが。もしそうなら、それは文字を削除する必要があります。
12 sed 

1
sedの `-n`オプションは何をしますか?
これは、次のマニュアルページのエントリです-n。 -n パターンスペースの自動印刷を抑制する 特定の操作に使用しない場合-n、各行が標準出力に印刷されます(要求された行が2回印刷されます)。 $ cat test.txt first second third fourth fifth $ sed -n '2,3p' test.txt second third $ sed '2,3p' test.txt first second second third third fourth fifth ただし、この法律は他のコマンドには適用されません。 $ sed -n 's/t/T/' test.txt $ sed 's/t/T/' test.txt firsT second Third fourTh fifTh それで-n、正確に何をしますか?

1
[0-9]を[AJ]に置き換えてsedで動作しない
私は、0から9のすべての数字を、sedの対応する文字に置き換えるコマンドを作成しています。私は何か間違ったことをしていることは知っていますが、sedは置換正規表現を文字列リテラル以外のものとして解釈していません。 私が使用しているコマンドは sed -r 's/[0-9]/[A-J]/g' log > ~/output.txt それは私にはかなり簡単に思えますが、私は約1時間それにこだわっています。私が受け取る出力は、文字列「[AJ]」で0-9を置き換えます

2
1つの大きなテキストファイルでの複数の検索および置換アクション
大きなテキストファイル(約2GB)があります。同じファイルに対して5つの検索および置換アクションを実行したいのですが、1つのコマンドでこれを実行したいと考えています。通常はvimを使用し、ファイルを開き、1つの置換アクションを実行してから、次のアクションを実行します。3つまたは4つの検索後にvimがメモリの問題でクラッシュすることに気付いたので、問題が1つあります。 Vimで使用するコマンドの例を2つ示します。 :%s/www\.abcdef/www.test.abcdef/g :%s/www\.klmnop/www.test.klmnop/g これを処理する最良の方法は何ですか?

1
GNU sed(Windows用)はUnicodeを処理できますか?もしそうなら、それはコードページ/ロケールの問題ですか、それともスイッチですか?
私はここ数年、GNU SEDをオンとオフで使用しています。それは時々私を少し回転させます、しかしそれは良い仕事をします...シングルバイト文字セットのために! GNU SEDへの参照がUnicodeに対応していることに時々気づきますが、これに最も近いのはその「バイナリ」モードです。バイナリはUnicodeではありません。 GSEDは、特に\ r \ n(Windows)を含め、CodePoint解像度でUnicodeテキストファイルを処理できますか?可能であれば、UTF-8、UTF-16、または何を期待していますか?SEDはどのようにしてエンコードを検出しますか?
10 windows  encoding  unicode  sed  gnu 

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