sed
Synopsis
sed [command line flags] command [file]
command has different components: [address1[,address2]]function[arguments]
addresses mean the line range or pattern of the input file. For example sed 1,100 s/abc/ABC/ example.txt. 1,100 are the 2 addresses.
functions may receive 0, 1 or 2 addresses. represented by 0addr, 1addr or 2addr in the below text.
pattern space: the current matched line is buffered into pattern space except for some special commands.
hold space: the pattern to be matched
common one-line functions
[1addr[,2addr]] s/regex/pattern/flags
flags:
N: is the number, meaning the N th occurance
g: make change to all non-overlapping matched pattern
p: print to output when replacement made.
w: write to a file if replacement made.[1addr]a\
text
append the text below the matched line.[1addr[,2addr]]c\
text
replace the current line withtext. if addresse is a range, then replace the range with one single line of text.[1addr]i\textinsert the text above the matched line.y/source pattern/transformed pattern/
transform character sets. If wanto to transform set of regex, need to use multiplescommands.command line flags
-ewhen considering multiple arguments for commands, use it.advanced one-line functions on pattern and hold spaces
greplace hold space with pattern space.Gappend pattern space to hold space.
hreplace pattern space to hold space.Happend hold space to pattern space.dandDdeletes the current pattern space.eexchange hold and pattern space.advanced multiple-line function
NPDcommands includes the next line till by including newline character into buffer. So it operates on multiple lines. refer to manual when need this function.
usually called before other commands in a functoin list{}.summary
when need to use regex to match pattern, used
sed.sedis a stream editer for TRANSFORMING and FILTERING input text ONE LINE AT A TIME.the synopsis of
sedis alwayscommand-line flags+[address] function|{functions} [arguments]+< input file+> output filethe most common and useful command in sed is the s command. make well used of it.
awk
Different shells use different versions of awk. Linux uses gawk. Mac uses nawk. But nowawadys, shell scripting languages are more of a convienent and light weight tools for data processing. So only commands in awk is sufficient and fast.
synopsis
awk '[BEGIN {exp1[ ; exp2]}] { } END {exp1 [; exp2]}' [file]
if () {} [else {}]
for () {}
while () {}
printf(format[,expression_list])
built-in variables
FS, OFS field seperator
RS, ORS carriage seperator
NF, NR number of field, line
FILENAME
expressions
regular expressions: word [~|!~] /regex/
boolean operators: &&, ||, ~
conditional expressions: >, <, …
arithmetic expressions:
assignment expressions: +=, -=, ++, array[string|number] = expression …
functions
convienent functions for numbers and strings
numerical functions
string functions
self-defined functions
flow control
break
continue
next skip the current line. run the command againe on the next line.
exit [1|2]
I/O
>, >> put Inside the script, to write to file.
summary
when operating structure data, use awk.
operate more complex data. more suitable for structured data.
generally more sophisticated than sed, making the use scenario of sed more limited to simple substitution.
grep
flags
-v inverse selection
-o output only matched world
-c count the number of lines selected