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

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

1
検索とsed(検索と置換)
Macで次のコマンドを使用しています。 $find . -name “*.java” -exec sed -i ’s/foo/bar/g’ {} \; 効果がないようです。 ディレクトリに.javaで終わる2つのファイルがあり、どちらにもfooテキストが含まれています。何か不足していますか? 編集:コメントのリクエストの結果 [aafghani-03:~/test amirafghani]$ find . -name "*.java" -exec sed -i 's/foo/bar/g' {} \; sed: 1: "./bar.java": invalid command code . sed: 1: "./foo.java": invalid command code .
26 find  sed  osx 

1
パイプから読み取るときに「sed q」の動作が異なるのはなぜですか?
この質問は、UnixおよびLinux Stack Exchangeで回答できるため、Server Faultから移行されました。 3年前に移行され ました。 次を含む「test」という名前のテストファイルを作成しました。 xxx yyy zzz 私はコマンドを実行しました: (sed '/y/ q'; echo aaa; cat) < test そして私は得た: xxx yyy aaa zzz それから私は走った: cat test | (sed '/y/ q'; echo aaa; cat) そして得た: xxx yyy aaa 質問 sed「y」のある行が見つかるまで読み取り、出力してから停止します。2番目のケースではなく最初のケースでは、catは残りを読み取って出力します。 誰かがこの行動の違いの背後にある現象を説明できますか? また、Ubuntu 16.04とCentos 6でもこのように動作することに気づきましたが、Centos 7ではコマンドは「zzz」を出力しません。
25 sed  pipe 


4
2つのタイムスタンプ間でログを抽出する方法
2つのタイムスタンプ間のすべてのログを抽出したい。一部の行にはタイムスタンプがない場合がありますが、それらの行も必要です。つまり、2つのタイムスタンプの下にあるすべての行が必要です。私のログ構造は次のようになります。 [2014-04-07 23:59:58] CheckForCallAction [ERROR] Exception caught in +CheckForCallAction :: null --Checking user-- Post [2014-04-08 00:00:03] MobileAppRequestFilter [DEBUG] Action requested checkforcall との間のすべてを抽出したい2014-04-07 23:00とし2014-04-08 02:00ます。 開始タイムスタンプまたは終了タイムスタンプがログにない場合がありますが、これら2つのタイムスタンプの間のすべての行が必要です。

10
EOFで複数の改行を削除する方法は?
1つ以上の改行で終わるファイルがあり、1つの改行のみで終わる必要があります。Bash / Unix / GNUツールを使用してこれを行うにはどうすればよいですか? 不良ファイルの例: 1\n \n 2\n \n \n 3\n \n \n \n 修正されたファイルの例: 1\n \n 2\n \n \n 3\n 言い換えると、EOFとファイルの最後の非改行文字との間に改行が1つだけあるはずです。 参照実装 ファイルの内容を読み取り、最後にさらに2つの改行がなくなるまで1つの改行を切り取り、書き戻します。 #! /bin/python import sys with open(sys.argv[1]) as infile: lines = infile.read() while lines.endswith("\n\n"): lines = lines[:-1] with open(sys.argv[2], 'w') as outfile: for line in lines: …
25 bash  sed  awk  ed 

8
sedは「二重」改行文字を削除できますか?
空の行が多いドキュメントがあります。 一緒に2つ以上ある場合、どうすれば削除できますか。 sed "s/\n\n//"ファイルを試しましたが、うまくいきませんでした。エラーなし。
25 sed 

2
変数からすべてのスペース、タブ、改行などを削除しますか?
これは私が得ているエラーであり、値が2になるはずの変数のために失敗しています(これを使用してこれを取得していますselect * from tabel)。その変数にスペースが入っています。 + 0 != 2 ./setjobs[19]: 0: not found. その変数からすべてのスペースまたは改行を削除するにはどうすればよいですか?缶tr、sedあるいは何の助け? これは私がやっていること: set_jobs_count=$(echo "set heading off; select count(*) from oppar_db where ( oppar_db_job_name, oppar_db_job_rec ) in ($var) ;" | \ sqlplus -s ${OP_ORA_USER}/${OP_ORA_PASS}@$OPERATIONAL_DB_NAME) これは提案どおりに機能します。 | sed 's/[[:space:]]//g' しかし、私はまだ次のような値を取得します: set_jobs_count= 2
25 shell  sed  tr  whitespace  newlines 

8
Linuxでファイルの最後の列を削除する方法
txtファイルの最後の列を削除したいのですが、列番号がわかりません。どうすればこれができますか? 例: 入力: 1223 1234 1323 ... 2222 123 1233 1234 1233 ... 3444 125 0000 5553 3455 ... 2334 222 そして、出力を次のようにします。 1223 1234 1323 ... 2222 1233 1234 1233 ... 3444 0000 5553 3455 ... 2334


9
ファイルから2行ごとに削除する方法は?
ファイル: Data inserted into table. Total count 13 No error occurred Data inserted into table. Total count 45 No error occurred Data inserted into table. Total count 14 No error occurred Data inserted into table. Total count 90 No error occurred 期待される出力ファイル: Data inserted into table. Total count 13 Data …


3
周囲の文字を出力せずに「sed」と一致する正規表現を抽出する
そこにいるすべての「sed」医師に: 行内で一致した正規表現を抽出するために「sed」を取得するにはどうすればよいですか? 言い換えれば、正規表現に対応する文字列だけが、含まれる行の一致しないすべての文字を取り除いたものになります。 以下のような後方参照機能を使用してみました regular expression to be isolated gets `inserted` here | v sed -n 's/.*\( \).*/\1/p これは次のようないくつかの式で機能します sed -n 's/.*\(CONFIG_[a-zA-Z0-9_]*\).*/\1/p 'CONFIG_ ....'( '* .h'ファイルにあります)で始まるすべてのマクロ名をきれいに抽出し、それらをすべて1行ずつ出力します CONFIG_AT91_GPIO CONFIG_DRIVER_AT91EMAC . . CONFIG_USB_ATMEL CONFIG_USB_OHCI_NEW . e.t.c. しかし、上記のようなもののために内訳 sed -n 's/.*\([0-9][0-9]*\).*/\1/p これは常に次のような1桁を返します 7 9 . . 6 などの連続した数字フィールドを抽出するのではなく。 8908078 89670890 . . . …
24 sed 

3
sedの正規表現で[\ w] +を使用するには?
私はWindowsを使用していますが、私の質問はまだここに正しく置かれていると思います。 C:\Users\User>grep --version GNU grep 2.6.3 C:\Users\User>sed --version GNU sed version 4.2.1 私は次のように動作していることに気付きました(出力here): echo here | grep -E "\w+" echo here | grep -E "[her]+" しかし、これは機能しません(何も出力しません): echo here | grep -E "[\w]+" これは再び行います(出力here): echo here | grep -P "[\w]+" だから[\w]、Perlの正規表現に固有の何かだと思います。あれは正しいですか? それでは、話しましょうsed。これは動作します(出力gone): echo here | sed -r "s/\w+/gone/" echo here | …

5
ファイル内のテキストをgrepし、そのテキストを含む段落を表示する方法は?
ファイル内のテキストは次のとおりです。 Pseudo name=Apple Code=42B state=fault Pseudo name=Prance Code=43B state=good 「42B」をgrepして、上記のテキストから次のような出力を取得する必要があります。 Pseudo name=Apple Code=42B state=fault grep/ awk/ を使用してこれを達成する方法について誰にもアイデアがありますsedか?

4
特定の行でのOSX挿入のsed
だから私はしばらくの間linuxで 'sed'を使用していましたが、 'POSIX sed'と 'GNU sed'には多くの小さな違いがあるため、OSXで使用するのに少し苦労しました。現在、特定の行番号の後にテキスト行を挿入する方法に苦労しています。(この場合、4行目) Linuxでは、次のようなことをします。 sed --in-place "4 a\ mode '0755'" file.txt OSXでこれを試しました: sed -i "" "4 a\ mode '0755'" file.txt ただし、これにより、「コマンドの最後にある\の後の余分な文字」エラーが表示され続けます。ここで何が間違っているのでしょうか?タイプミスはありますか?または、sedのバージョン間の別の違いを理解していないのですか?
24 sed  osx  posix  gnu 

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