沐风白桦

大圣休得胡闹

awk使用教程

| Comments

入门

awk在文本处理脚本shell里很常用,它从管道|或文件中读取每一行,然后按照一定规则把每行自动分成多列,默认使用空格自动分列。在awk里面,空格可以是空白字符TAB制表符。分列可以让awk脚本很方便地引用这些分隔开的值,$1表示第一列,$2表示第二列,等等以此类推,当然$后面的数字可以是个很大的值,比如$1024。另外,在awk中使用$0表示整行,$NF表示最后一列。

先来看个示例

1
echo 'this seems like a pretty nice example' | awk '{print $1}'

$1this$2seems$7$NFexample,在该例子中使用空格分隔成7列,完整语法是这样的

1
echo 'this seems like a pretty nice example' | awk -F' ' '{print $1}'

可以看到awk多了一个-F参数,通过该参数可以设置各种分隔符,单字符多字符都能很好的支持,同样的示例我可以添加-F' like '这样的多字符分隔符,可以得到结果this seems.

1
echo 'this seems like a pretty nice example' | awk -F' like ' '{print $1}'

markdown缩进语法

| Comments

行首添加TAB符号,如下脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  #!/bin/bash
  sudo sysctl net.inet.ip.forwarding=1
  sudo sysctl net.inet.ip.redirect=1
  sudo sysctl net.inet6.ip6.forwarding=1
  sudo sysctl net.inet6.ip6.redirect=1
  sudo pfctl -d
  sleep 1

  sudo pfctl -F all -f /etc/pf.conf
  sleep 1

  echo "
  nat on en4 from bridge100:network to any -> (en4)
  rdr pass on bridge100 inet proto tcp to port {443,80} -> 127.0.0.1 port 8888" | sudo pfctl -evf -

  export MITMPROXY_SSLKEYLOGFILE=~/Documents/master-secret.log
  mitmproxy -T -p 8888

可以转换成如下样式

#!/bin/bash 
sudo sysctl net.inet.ip.forwarding=1
sudo sysctl net.inet.ip.redirect=1
sudo sysctl net.inet6.ip6.forwarding=1
sudo sysctl net.inet6.ip6.redirect=1
sudo pfctl -d
sleep 1

sudo pfctl -F all -f /etc/pf.conf
sleep 1

echo "
nat on en4 from bridge100:network to any -> (en4)
rdr pass on bridge100 inet proto tcp to port {443,80} -> 127.0.0.1 port 8888" | sudo pfctl -evf -

export MITMPROXY_SSLKEYLOGFILE=~/Documents/master-secret.log
mitmproxy -T -p 8888

convert movie to GIF

| Comments

tinyproxy install

| Comments