Linux 下处理字典的一些Shell命令

0x00 Windows&Linux换行符
Windows换行符是\r\n ,Linux换行符是\n,一些处理Shell命令:
sed -e 's/.$//' dos.txt > linux.txt   # 删除最后一个字符,删掉\r,不推荐,如果最后不是\r,则字符会被删掉
    
    #系统命令:
    dos2unix [-kn] file [newfile]   #dos到unix
    unix2dos [-kn] file [newfile]   #unix到dos
        参数:
        -k : 保留该文件原来的mtime时间格式(不更新文件上次内容经过修改的时间)
        -n : 保留原来的旧文件,将转换后的内容输出到新文件,如:dos2unix -n old new
        
    sed -e 's/^M//g' $file   # ^M,unix环境表示Windwos换行符,按住CTRL+v,松开v,按m输入,复制无效
    
    推荐使用最后一条
 
 0x01 去空行
    cat $file | tr -s ‘\n’
    cat $file | sed ‘/^$/d’ 
    cat $file | awk ‘{if($0!="")print}’
    cat $file | awk ‘{if(length !=0) print $0}’
    grep -v “^$” $file
 
0x02 去重复行 
    sort -n $file | sed '$!N; /^\(.*\)\n\1$/!P; D'
    sort $file | uniq
 
 0x03 去空格
    echo $S |tr -d ' ' 
    echo $S |tr ' ' '/0'
 
0x04 去空格和制表符号
    sed 's/[ \t]*//g' file
    sed 's/[[:space:]][[:space:]]*//g' file
 
 0x05 设置ASCII环境去除acsii码32~126之外的字符
    LANG=C grep -v '[^[:graph:]]' graph.list  # LANG=C 不能少,否则只要能显示字符都会保留,比如中文
 
0x06 命令整合 
     去空格和制表符-->去非ascii码32~126-->排序-->去重复-->去空行
    sed -e 's/[ \t]*//g' *.list | LANG=C  grep -v '[^[:graph:]]'  | sort | uniq | sed '/^$/d' > new.list
 
0x07 文本列分割
    awk 'BEGIN{FS=":"}{print $1}' file   # FS 设置列分割符,$0是整行,$1是第一列,以此类推
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值