shell&awk

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的最后一行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值