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

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

8
無制限の列の交換
列のあるファイルがあります。例については、以下を参照してください。 a b c ... z 1 2 3 ... 26 最初の列が最後になり、2番目の列が最後になる前の列になるように、すべての列を交換したい...など z y x ... a 26 25 24 ... 1 これを行う1つのライナー(awkまたはsed)がありますか?列が数列しかないときに 使用できることは知っawkていますが、数千列のファイルでこれを実行できるようにしたいと思います。 tacこれを行に対して完全に行います。 列に相当するものを探していると思います。 rev コラム内のコンテンツも入れ替えるため、私には役に立たなかった。

4
次の行に特定の一致が含まれていない場合にのみ、行を印刷します
完了しなかったログに記録されたアクティビティのログファイルを検索しようとしています。たとえば、「ID 1234のアクティビティを開始しています...」と記録し、成功した場合、次の行は「アクティビティ1234完了」になります。 対応する「完了」行が続かない「開始...」行を取得しようとしています。 ログファイルの例 Starting activity for ID 1234 ID 1234 completed successfully Starting activity for ID 3423 ID 3423 completed successfully Starting activity for ID 9876 ID 9876 completed successfully Starting activity for ID 99889 ID 99889 completed successfully Starting activity for ID 10011 ID 10011 completed successfully Starting …
12 grep  sed  awk 


2
GNU sed 4.0ではないsedバージョンはどれですか?
sedBusyBox 1.18.3 で使用しているバージョンを把握しようとしています。--version出力は不可解です。 $ sed --version This is not GNU sed version 4.0 次のコードは、関連するからのものsed.cです。 /* Lie to autoconf when it starts asking stupid questions. */ if (argv[1] && !strcmp(argv[1], "--version")) { puts("This is not GNU sed version 4.0"); return 0; } これはヘッダーです: /* * sed.c - very minimalist version of …
12 sed  version  busybox 

4
grep —区切り文字トークンの後のテキストを削除する
私は;すべての行の最初の後にすべてを削除する必要があるファイルを持っています。 したがって、このようなファイル: sdfsdsdf; fsdfsddf;sdfsd; これは次のようになります。 sdfsdsdf fsdfsddf 私はに見てきたgrepとsed。これらのコマンドのいずれかを組み込んだ回答をいただければ幸いです。


3
リストの最後の行だけを表示する方法は?
リストを作成し、一時的な属性でファイルを並べ替えるとします。 ls -ltr -rwxrwxrwx 1 bla bla 4096 Feb 01 20:10 foo1 -rwxrwxrwx 1 bla bla 4096 Feb 01 20:12 foo2 . . . -rwxrwxrwx 1 bla bla 4096 Mar 05 13:25 foo1000 リストの最後の行だけを取得するには、パイプチェーンのls -ltrの後ろに何を追加すればよいですか?私はsedとawkがあることを知っていますが、それらの使用方法はわかりません。何ができるかしかわかりません。
12 command-line  sed  awk  ls 

3
単語の最後の文字を削除しますが、文字がそこにある場合のみ-bashで
最後の文字がある場合にのみそれを削除する方法は? 入力: OpenOffice.org/m openOffice.org/ozm パース。 Pfg。 フィル。 教授 それぞれ。 Roonstr./m roonstr./ozm 望ましい出力: OpenOffice.org openOffice.org パース 製造 フィル 教授 応答 Roonstr roonstr これまでのところ、ドットだけが残っていることがわかりましたが、残念ながら最後のsedコマンドも文字を削除しgます。 $ cat filename | grep "\." | cut -d"/" -f1 | sed 's/.$//'


2
sedで複数の再利用のために複雑な正規表現をどのように保存しますか?
を使用するsed場合、ファイル内で2回一致させる必要があるかなり複雑で複雑な正規表現を作成することがよくあります。この正規表現を保存して2回参照する方法はありますか? たぶんこんな感じ? sed ' complicated_regex=/^(([a-f0-9]{32})+([a-zA-Z0-9=]{{$i}})?)+$/ s/complicated_regex:complicated_regex/simple-output/ ' my_file 更新:回答により、bash変数を使用するソリューションが提示されました。これは機能しません。与えられたtest.txt。 #test.txt foo bar bar foo そしてスクリプト #!/bin/bash VALUE='foo \([a-z]\+\)' sed 's/"${VALUE}"/foo happy \1/' test.txt これは出力を生成するはずです foo happy bar bar foo しかし、代わりにエラーが発生します sed: -e expression #1, char 24: invalid reference \1 on `s' command's RHS

5
sedが改行文字を削除できない
私はsedかなり長い間使用してきましたが、これは私が出くわした気まぐれで、解決できません。 実際のケースで私の問題を説明させてください。 シーン#1 printf "ls" | xclip -selection clipboard echo "ls" | xclip -selection clipboard 最初のコマンドでは、printf出力をパイプxclipしてクリップボードにコピーします。現在、printfとは異なりecho、デフォルトでは末尾に新しい行を挿入しません。そのため、このコンテンツをターミナルに貼り付けlsても、コピーされたコマンドは自動的に実行されません。 2番目では、最後に新しい行があるので、クリップボードの内容を貼り付けると、クリップボードでコマンドが実行されます。 これは私には望ましくありません。そのため、を使用して改行を削除したかったのですsedが、以下のシーンで説明されているように失敗しました。 シーン#2 echo "ls" | sed -r 's/\n//g' | xclip -selection clipboard クリップボードのコンテンツにはまだ改行が含まれています。端末に貼り付けると、コマンドが自動的に実行されます。 改行文字も削除してみました\r。なだ。ここに非常に重要な/基本的な何かが欠けているようです。
12 sed  newlines 


4
UNIX変数から改行を削除する
SQLクエリを使用して値が見つかった変数があります。 この変数を他の変数と連結したいので、その変数から改行文字を削除します。以下はコードです: dt=`sqlplus -s user/pwd@servicename <<EOF set feedback off; set head off; select replace(to_char((sysdate-7),'YYYYMonDD')||'_'||to_char((sysdate-1),'YYYYMonDD'),chr(10), '') from dual; exit; EOF` echo "test $dt"
12 sed 

2
入力の最初のN行を削除するコマンド
バックグラウンド SSHサーバーを実行しており、このユーザーを削除する必要があります。このユーザーは、最初に強制終了する必要のあるいくつかのプロセスを現在実行しているため、削除できません。 これは、現在使用しているユーザーのすべてのプロセスIDを見つけるために現在使用しているパイプラインです。 ps -u user | awk '{print $1;}' 出力は次のようになります。 PID 2121 2122 2124 2125 2369 2370 これをパイプkill -9してすべてのプロセスを強制終了し、次のようにこの愚かなユーザーを削除できます。 ps -u user | awk '{print $1;}' | sudo xargs kill -9 しかし、これはPIDヘッダーのために機能しません: kill: failed to parse argument: 'PID' 質問 入力の最初の行を削除するには、単純なUnixコマンドが必要だと考えています。 tailこれに使用できることは承知していますが、表示する行数を正確に把握するために、入力に含まれる行数をカウントしたくありません。 headまたはtail逆のようなものを探しています(ストリームの最初/最後の部分のみを表示する代わりに、ストリームの開始/終了以外のすべてを表示します)。 注意 コマンドの| grep [[:digit:]]後に追加するだけでこの問題を解決できましたawkが、他のシナリオでは非常に役立つと思うので、ファイルの最初の行を削除する方法を探しています。
11 command-line  sed  awk  tail  head 

3
位置を特定し、sedを使用して変更を加える
このスクリプトは、sedを使用してすべての「」を「新しいもの」に変更します。yyyの後の「」だけをどのように変更しますか:sedなどを使用しますか? cat >sample.txt <<EOF xxx: "" yyy: "" } EOF sed --expression='s/""/"new stuff"/' sample.txt
11 sed 

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