每日一句shell备忘

记录遇到的一些有用shell.
益达不八哥曾经说过:

A shell a day keeps the bug away.

已经知道的有用shell

  • 获得文件行数: wc -l filename
  • 去除文本中的重复行: sort -u filename
  • 使文本按照某个列排序(该列是数字): sort -t $"\t" -k5nr
    – 上面的意思是, 该文件每列以TAB符号分隔, 需要对第5行k5数字n按倒序r排列
  • 输出文件的某一列: awk "{print $3}"
  • 按照某种过滤规则输出某一列: awk "/final_result\":\"1/{print $1}"
    – 上述正则表示,寻找包含final_result":"1的行, 打印第1列数据
    – 良心站点: https://linux.cn/article-7586-1.html
  • 待补充…

20180921

给文本文件的每一行前面添加行号

awk '{printf("%5d : %s\n", NR,$0)}' filename > filenamenumbered

20180922

打印csv文件特定列, 指定分隔符(awk默认是SPACETAB分隔)

$ awk -F "," '{print $2}' FILE

20180924

统计csv的文件某一列, 总共有多少类?(csv文件包含头)

awk -F "," 'NR>1{print $26}' train.csv|sort -u| wc -l

20181010

重定向nohup的输出, 使同一目录下不同文件的nohup可区分

nohup some_command > nohup2.out&

注: 某些回答里面说, 要写成some_command &, 但在我的机器上并不work

20190408

  1. 有些压缩文件并没有被tar压缩,而是仅仅用了gz,此时需要使用gzip解压
    -c表示输出到终端,这样一来就可以重定向到文件里。
    -d表示解压,因为gzip默认是执行压缩功能。
gzip -dc part-1.gz > ../data/part1.txt
  1. 查看文件编码
    https://www.tecmint.com/convert-files-to-utf-8-encoding-in-linux/
    You can check the encoding of a file using the file command, by using the -i or --mime flag which enables printing of mime type string as in the examples below:
file -i Test.java
  1. 转换文件编码
    查看了原始编码之后,就可以去修改相应的编码了。
iconv -f ISO-8859-1 -t UTF-8//TRANSLIT input.file -o out.file
  1. 打印列表列数、最后一列
    NF表示打印列数
    $NF表示打印最后一列
awk '{print NF}'
awk '{print $NF}'

20190415

shell的函数返回值到variable. 总体思想是用$()捕捉输出

demofunc(){
    local variable="hellow"
    echo $variable    
}

val=$(demofunc)
echo $val

20190418

shell重定向输出(1>&2 2>&1 &>file >&file)的区别
经常会用

xxx 2>&1

重定向错误输出到标准输出。
详细请参阅链接

20190419

在判断当前脚本进程运行数量的时候,经常使用

ps ux|grep -v grep|grep $0|awk '{print $2}'|wc -l

但是近期出现检测到多个实例的情况,其pid不相同。
并且如果脚本被设定在crontab里面,更是会额外检测到一个和crontab对应的脚本,也会出现$0进程。

现在这个问题尚未解决,目测可能是因为有source other_bash.sh,导致检测到多重脚本。

20190422

不使用root,适用当前用户权限安装pip

pip install package --user

--user makes pip install packages in your home directory instead, which doesn’t require any special privileges.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值