共同点

两者基本都是如下运行方式, 即前半段用于匹配, 后半段用于动作:

匹配 + 动作

举例:

sed

/Sebastopol/s/CA/California/g

其中, /Sebastopol/ 用于匹配, 即含有 Sebastopol 的行会执行后续动作. s/CA/California/g 是动作, 即前面匹配的行中, 替换 CA 为 California.

可以省略匹配部分, 即不写 /Sebastopol/, 意味着对匹配行没有限制, 任何行都执行后续动作.

awk

/regular/ { print }

其中, /regular/ 用于匹配, 即含有 regular 的行执行后续操作, 此处只是 print, 即打印当前行.

匹配部分可以省略, 而且在 awk 中很多时候都会省略掉匹配部分, 只有后面的动作, 所以很多时候我们看到的 awk CLI 命令形如: awk '{print $7}', 其中的大括号 {} 不可省略, 因为大括号和其中的内容合起来作为动作存在, 无法再度省略.


备忘

one-liner:

perl -lane 'command'
sed -e 'command'
awk 'command'

awk simulates arrays with multiple indices by treating a comma-separated list of indices as a single string. However, because commas might well occur in the index values themselves, awk replaces the index-separator commas by an unprintable string stored in the built-in variable SUBSEP.

Comments
Write a Comment