Linux每天一点积累

Linux每天一点积累

  1. wc 计算文件的Byte数、字数、或是列数
    -l 统计文件的行数,可能会出现行数统计不符合真实值的情况,因为wc -l只统计newline的行数,newline可以理解为换行符

  2. awk https://www.cnblogs.com/yaohong/p/9163471.html
    2.1 打印一个文件中第20行到30行第1列的数据,#print $a取列#NR取行数—— awk ‘{if(NR>=20 && NR<=30) print $1}’ test.txt
    2.2 按冒号分割文件中的每一行,并打印第一列的字符:awk -F’:’ ‘{print $1}’ file, 注意分隔符与命令之间的空格
    2.3 正则表达式运算—awk ‘BEGIN{a=“100testaa”;if(a~/100/) {print “ok”}}’ ~是正则匹配运算符
    2.4 字段数量 NF ,记录数量 NR
    2.5文本去重,不打乱顺序:awk ‘!a[$0]++’ file
    awk ‘{print $0}’ test #打印文件的全部内容

    由于执行了++,它的初值变成了0【执行++后数组被定义为int型,初始值就为0】
    默认空char型变量未null,空int型变量为0
      第一次肯定是不同的行,所有不会有重复
      但遇到重复的行是,数组的下标相同,此时数组的value为0,执行++后,数组值为1,经取反后
      数组为0,action不执行【即不打印】

    https://www.cnblogs.com/276815076/archive/2012/03/23/2414077.html

  3. 求两个文件的交集和并集
    利用awk求文件交集:awk -F ‘\t’ ‘NR==FNR{a[$1]=1}NR>FNR{if(a[$1]){print $1}}’ aaa.txt bbb.txt
    注意指定-F’\t’,否则生成的结果中单个field中的空格可能变成了\t,造成列的混乱

NR表示已经处理的行数,FNR表示当前文件处理的行数。所以当NR==FNR时,处理的是aaa.txt,NR>FNR时,处理的是bbb.txt,在处理aaa.txt时,把a数组记录不同字符串个数,且起到去重作用。在处理bbb.txt时,判断a数组中是否含当前字符串,并且在本文件中出现的次数小于1,同样也是起到了去重的作用。

   求交集:  grep -F -f aaa.txt bbb.txt   
          输入的每一行必须是唯一的
          -f 把aaa.txt当作匹配项
         -F 把匹配项当作字符串
        在bbb.txt中找 与aaa.txt中的每一行相同的行

   思路:先排序再求交或者并,必须保证文件1和文件2都没有重复行
   这种方式求交并集有问题:-d是显示重复出现的行,如果文件1或者文件2有重复出现的行,也会被当做交集输出。
         并集:cat file1 file2 | sort | uniq > result
         交集:cat file1 file2 | sort | uniq -d > result
         差集:cat file1 file2 | sort | uniq -u > result
   https://blog.csdn.net/bitcarmanlee/article/details/82426072
   或者
   并集:sort file1 file2 | uniq 
   交集:sort file1 file2 | uniq -d            (-d仅显示重复出现的列)
   差集: sort file1 file2 file2 | uniq -u (-u仅显示只出现一次的列)
   https://cloud.tencent.com/developer/article/1613208

4.解决cat 中文乱码
cat test.txt | iconv -f GBK -t UTF-8
5.wget被禁止匿名访问
177机器新的ftp访问方式:
wget ftp://work:QWE123asd@tc-ps-201801-m42-feed177.tc/file_path
Ftp 根目录是 /home, 所以file_path直接从 home目录的子目录开始写 即可,
比如 原始文件路径是 /home/work/test.txt, 则 ftp路径为wget ftp://work:QWE123asd@tc-ps-201801-m42-feed177.tc/work/test.txt

6.hive保存查询结果
insert overwrite directory ‘afs://tianqi.afs.baidu.com:9902//user/global_la/dianzhan/search_show_data/zsjm_show/{DATE}’ ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘\t’

7.Lateral View和Explode用法简介

hive中行转列,处理map类型数据
https://zhuanlan.zhihu.com/p/115913870

8.获取当前文件的路径
$0:文件名
dirname $0,获取当前Shell程序的路径
9.screen命令
应用场景:让程序一直在后台运行,如果遇到断网或者ssh退出的情况,可以从断点处继续运行(特别是需要交互的时候,比nohup强)
screen -s name 创建一个新的窗口
ctrl+a窗口之间切换
screen -ls查看存在的窗口的状态detach(离线)或者attach(在线)或者dead(死进程)
screen -r name 回到某个后台运行的screen
Screen -d name强制让某个窗口离线,当状态为attached时,想回到该窗口,可以先-d离线,再-r回到该窗口
https://www.jianshu.com/p/b500838560ed

10.当git clone的项目过大导致失败,可以利用git clone —depth=1拉取
git clone -b 拉取指定的分支
11.sed 命令
sed -n ‘100,200p’ file_name 查看一个文本的第100行到200行
12.seq生成数字序列
seq 起始值 步长 结束值
13.diff命令,比较两个文件的不同
diff 2.txt 1.txt |grep “<”|awk ’ $1 = " " ’
14.获取主机的IP:hostname -i

15.字符串切割
array=(${res//,/ }) 按逗号切割

16.sort
按照指定的列排序
单列排序:sort -t’\t’ -k 1nr file -n是按照数值排序,否则就把数字当做字符串, -r是逆序
多列排序:sort -t “\t” -k 1n,1 -k 5rn,5 baseline_dict

sort -u 去除重复项

17.uniq命令
uniq file 删除重复行
uniq -d file仅显示重复出现的行
uniq -u file仅显示出现一次的行
uniq -c file检查文件并删除文件中重复出现的行,并在行首显示该行重复出现的次数

注意:uniq检查重复行时,只会检查相邻的重复项
18.comm命令
comm file1 file2
comm命令要求输入文件的内容必须是排序且唯一的
输出的第一列只包含file1中出现的行,第二列包含在file2中出现的行,第三列包含在file1和file2中相同的行。
各列是以制表符(\t)作为定界符。
格式化输出选项: -1:从输出中删除第一列 -2:从输出中删除第二列 -3:从输出中删除第三列 1.1 交集 打印两个文件的交集,需要删除第一列和第二列:

19.sed 命令—增删改查
sed -n file 打印行
sed -n ‘1,3p’ file 打印第一行到第三行
sed -n ‘/patern/p’ file 打印匹配pattern的行
sed -n ‘1,3{=;p}’ 打印第1行到第3行和对应的行号
sed -n ‘1,3!{=;p}’ !表示对前面的匹配模式取反
sed ‘1d’ file 删除第一行
sed ‘KaTeX parse error: Undefined control sequence: \newLine at position 30: … sed -e 4a\̲n̲e̲w̲L̲i̲n̲e̲ ̲file 在file的第四行后…{string//,/ }) //,/空格

qps 每秒处理的查询量

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值