用cat命令查看不可见字符

时常,某个程序或软件并没有语法错误,并且你检查它的相关内容也确实没有发现问题。 这是因为你用普通文本编辑器软件来查看的时候,有许多字符没有显示出来,但在终端使用 cat 命令可以很容易地检测出是否存在这些字符。 首先,我们创建一个简单的文本文件,写入一些特殊字符。打开终端,运行命令: 1 printf 'testing\012\011\011testing\014\010\012more testing\012\011\000\013\000even more testing\012\011\011\011\012' > /tmp/testing.txt 现在用不同的编辑器软件打开,显示的结果会不同。用简单的 cat 打开将显示: 1 2 3 4 5 $ cat /tmp/testing.txt testing testing more testing even more testing 如果用 nano 或者 vim 打开,将会看到: 1 2 3 4 testing testing^L^H more testing ^@^K^@even more testing 现在我们给 cat 加上一些选项参数,以便能显示出特殊字符来。 用 cat -T 命令来显示 TAB 键的字符^I 1 2 3 4 5 6 cat -T /tmp/testing.txt testing ^I^Itesting more testing ^I even more testing ^I^I^I 用 cat -E 命令来显示行尾的结束字符$
Read more...

初学awk编程

  • awk命令

基本格式就这两种

1
2
3
4
awk -F'<默认是空格,这里可正则表达式也可字符>' 'commands' file(s)

# 也可以用管道,
ll -t | awk -F':' '{print $2}'

通常awk做文本处理前还需要做一次过滤。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
awk -F':' '/<正则表达式or普通字符串>/{print $1}' /ect/passwd

# 例如,我先用SQL为关键字做一次过滤
awk -F':' '/SQL/{print $1, $5}' /etc/passwd
#_mysql MySQL Server
#_postgres PostgreSQL Server

# 现在匹配有zF字符的文本
awk -F':' '/[zF]/{print $1, $5}' /etc/passwd
#_ftp FTP Daemon
#_timezone AutoTimeZoneDaemon
#_krbfast Kerberos FAST Account
Read more...