awk记录
NF:多少列
NR:多少行
##awk中使用shell变量
$echo $sql_query
$query_result=`echo $sql_query | $sql_cmd | sed -n '2p'`
$echo $query_result | awk -F',' -v nuser=$localuser '\
{
print nuser
for (i = 0; i <= NF; i++)
{
##判断是否相等
if($i == nuser) { print $i }
}
}
多个分隔符
## one 和 | 作为分隔符
$echo 'woonea|aoaoaoaonebboneb:iooneii:' |awk -F'one|:' '{print NF}'
将两个文件按列合并
file01:
1 1
2 2
3 3
4 4
5 5
file02:
a a
b b
c c
d d
e e
第一种 使用awk
$ awk 'NR==FNR{a[i]=$0;i++}NR>FNR{print a[j]" "$0;j++}' file01 file02
第二种 使用paste
$ paste -d " " file01 file02
拆分合并某列行
$ awk 'NR<4{a[i]=$0;i++}NR>3{print a[j] "\t" $0;j++}' file01
删除文件中的空行
$sed '/^$/d' file
$grep . data.txt
$grep -v '^$' data.txt
$grep '[^$]' data.txt
$awk NF file //这个也可以将空格、tab等组成的空行删掉
$awk '!/^$/' file
删除/替换文件末尾换行符
$cat file | tr '\n' ' '
$sed ':a;N;$!ba;s/\n/ /g' file
:a; 这是一个标签,用来实现跳转处理,名字可以随便取(a),后面的b a就是跳转指令
N; N是sed的一个处理命令,追加文本流中的下一行到模式空间进行合并处理,因此是换行符可见
s/\n/:/; s是sed的替换命令,将换行符替换为空格
b a 或者 t a b / t 是sed的跳转命令,跳转到指定的标签处
$!不包含file的最后一行