Подборка комманд sed

Автор | 08.06.2011

Скомуниздена подборка консольных команд с помощью Sed

REM Удалить пустые строки в файле
sed -e "/^$/d" 1x.txt > 2x.txt

REM Delete all newline.( Concatenate each line of 1x.txt into 1 line of string )
sed ":a;N;$!ba;s/\n//g" 1x.txt > 2x.txt
REM http://sed.sourceforge.net/sedfaq5.html#s5.10

REM Print line without 'code'
sed -n "/code/!p" 1x > 2x.txt
REM In bash shell, use single quote.

REM Delete line 2 up to line 10 inclusively.
sed -e "2,10d" 1x.txt > 2x.txt

REM Пропустить 3-ю строку(Заменить 'a' на 'b' во всех строках кроме 3-й).
sed -e "3n; s/a/b/g" 1x.txt > 2x.txt

REM Insert LINE at line 3.
REM If no number before i is defined, then sed will insert LINE before every line in 1x.txt
sed -i "3i\LINE" 1x.txt

REM Append WORD at the end of file.
sed -i "$a\WORD" 1x.txt

REM Use semi-colon(;) as OR operator.
REM Print line containing expression1 or expression2 or etc
sed -n "/exp1/p; /exp2/p" 1x.txt

REM Number each line of a file
sed = filename.txt | sed "N;s/\n/\t:/" > 1x.txt

REM Replace empty lines with previous non-empty line.
sed -e "/[^ ]/{h}" -e g input.txt
REM http://www.computing.net/unix/wwwboard/forum/7768.html

REM Copy pattern found multiple times using ampersand(&)
ECHO 123 abc | sed "s/123/& | & | &/"

REM Copy pattern found multiple times using parentheses.
ECHO 123 abc | sed -e "s/\(123\)\(.*\)/ \1 \1 \2 \1 \2 /"

Classes

     [[:alnum:]]  - [A-Za-z0-9]     Alphanumeric characters
     [[:alpha:]]  - [A-Za-z]        Alphabetic characters
     [[:blank:]]  - [ \x09]         Space or tab characters only
     [[:cntrl:]]  - [\x00-\x19\x7F] Control characters
     [[:digit:]]  - [0-9]           Numeric characters
     [[:graph:]]  - [!-~]           Printable and visible characters
     [[:lower:]]  - [a-z]           Lower-case alphabetic characters
     [[:print:]]  - [ -~]           Printable (non-Control) characters
     [[:punct:]]  - [!-/:-@[-`{-~]  Punctuation characters
     [[:space:]]  - [ \t\v\f]       All whitespace chars
     [[:upper:]]  - [A-Z]           Upper-case alphabetic characters
     [[:xdigit:]] - [0-9a-fA-F]     Hexadecimal digit characters

http://www.student.northpark.edu/pemente/sed/sedfaq3.html

REM Print only if there are 3 consecutive hexadecimal.
echo a1f | sed -n "/[[:xdigit:]]\{3\}/p"

Regular Expression

Any character(.)
Dot(.) represents any character.
Negation(^)

    # (In bash) Remove everything that is not >
    echo 'a >bc>d  e' | sed -e 's/[^>]//g'
    # Remove tags(<..>)
    echo '

Remove

html/xml tags.' | sed -e 's/<[^>]*>//g'

Express OR expression inside square brackets([])

    # Replace a or f with X.
    echo 'abcdefghi' | sed -e 's/[af]/X/g'

Range(-)

    # Replace characters ranging from c to f inclusively with X.
    echo 'abcdefghi' | sed -e 's/[c-f]/X/g'

Defined repeating occurrences({})

    # Replace ccc with X. Don't forget to put backslash before curly brackets.
    echo 'abccdecccfghi' | sed -e 's/c\{3\}/X/g'

Infinite repeating occurrences(*)

    # Replace any characters(.) between a and ; inclusively with X.
    echo 'ab1$2c3+d;efghi' | sed -e 's/a.*;/X/g'

http://www.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap09.html#tag_09_03
http://www.gentoo.org/doc/en/articles/l-sed2.xml
http://www.grymoire.com/Unix/Sed.html#uh-0

Залишити відповідь