sedインスタンスセット.

1764 ワード

仕事でよく使うsedですが、ここではsedの使い方の例をまとめます.
[nanhuang@nanhuang ~]$ cat test
host = mydomain01.online.china.com
host = mydomain02.online.china.com
host = mydomain03.online.china.com
host = mydomain04.online.china.com
host = mydomain05.online.china.com
host = mydomain07.online.china.com
host = mydomain08.online.china.com
host = mydomain09.online.china.com
host = mydomain10.online.china.com

1、空白行を削除します.空の行は正規表現で^$と表されます.だから、
sed -i -e "/^$/d" filename.txt

2行番号を使用して、行を削除します.
sed '1,5 d' test
sed '5 d' test

3、指定した行の上/下に行を追加します.(行番号を知っている/知らない).'//i'または'//a'を使用します.例:
sed -i -e "/sentence specified/i\sentence appened' filename
sed -i -e "/sentence specified/a\sentence appened' filename

注意:ここの&,12...'s///'のように使用できません.
4,^と$の置換式への適用.^と$は行頭と行末の特殊な文字を表すので.行の先頭または末尾にフィールドを追加する場合.置換をそのまま使えばいいです.例:
sed -e 's/^/new_added_string/g' filename
sed -e 's/$/new_added_string/g' filename

5、ファイルの最後に行を追加します.
現在私が身につけている技術では、tailコマンドを借りて最後の行を見つけ、grepを通じて行番号を特定する必要があります.次に'a'を使用して置換を完了します.ブログの先頭にあるファイルを使用します.
sed -e "$(tail -1 test | xargs -I {} grep -n {} test | cut -d: -f1) a\sdfadf" test

注意:もちろん、このやり方は非常に煩雑です.
末尾にecho'string'>>filenameを追加します.
行ヘッダーの追加はsed'1 istring'filenameを使用します.
6、2行の位置を入れ替えます.
7、1行に複数の一致するフィールドがある場合は、いくつかのフィールドが置換されることを指定します.gは1行のすべてのフィールドを表し、数字はいくつかのフィールドを表す.例:
echo abcdabcdabc | sed 's/abc/bbb/3'

資料:http://www.grymoire.com/Unix/Sed.html