问题:用awk过来出、var/log/messages文件里的第四列
答案:N种.理解了这些,对shell编程的' " /就不会害怕了
cat messages | awk '{print $4}'
cat messages | awk {'print $4'}
cat messages | awk /{print/ /$4/}
cat messages | awk "{print /$4}"
#假设列数不是固定的,应该怎么写?use $A
A=4
cat message | awk "{print /$$A}"
awk /{print/ /$$A/} messages
awk '{print '/$$A/} messages
awk "{print "'$'$A"}" messages
相关概念:
1. IFS: 用来拆解command line的word用的
2. CR: 结束command line用的
3. IFS和CR都是常用的shell meta,除了它们,常用的还有:
= $ < > | &
( ) 将其内置命令置于nested subshell执行,或用于运算或命令替换
{} 将其内的命令置于no named function 中执行,或用于在变量替换的界定范围 eg: ${A}BC
; && || !
4.quoting(' " /):关闭元数据
5.shell meta 和awk meta的区别
grep的时候,不加引号,'', '' ""的区别:其实就是是否quoting的区别
A=abc
grep $A 等同于 grep abc
grep '$A': grep的就是$和A这两个字符. ''是hard quoting,所有的meta都被关闭
grep "$A" 等同于grep abc, “ ”是soft quting,不关闭$
6)
如果quoting没有结束,输入了CR,shell会让你继续输入。如果{作为元字符输入了,在输入CR,换行在输入},命令行会出错。shell自己的元字符,会自己找配对
> echo "fdsa
> "
fdsa
>
7) {}用法
echo ${A}
echo {$A}是没有意义的
8) cat 新建文件
cat > filename [CR}
输入内容
Ctrl+C 结束