Linux 应用记录

文件求交、并、差集

Linux 两个文件求交集、并集、差集

一、交集
sort a.txt b.txt | uniq -d

二、并集
sort a.txt b.txt | uniq

三、差集
a.txt-b.txt:

sort a.txt b.txt b.txt | uniq -u

b.txt - a.txt:

sort b.txt a.txt a.txt | uniq -u

四、相关的解释
使用sort可以将文件进行排序,可以使用sort后面的玲玲,例如 -n 按照数字格式排序,例如 -i 忽略大小写,例如使用-r 为逆序输出等

uniq为删除文件中重复的行,得到文件中唯一的行,后面的命令 -d 表示的是输出出现次数大于1的内容 -u表示的是输出出现次数为1的内容,那么对于上述的求交集并集差集的命令做如下的解释:

sort a.txt b.txt | uniq -d:将a.txt b.txt文件进行排序,uniq使得两个文件中的内容为唯一的,使用-d输出两个文件中次数大于1的内容,即是得到交集

sort a.txt b.txt | uniq :将a.txt b.txt文件进行排序,uniq使得两个文件中的内容为唯一的,即可得到两个文件的并集

sort a.txt b.txt b.txt | uniq -u:将两个文件排序,最后输出a.txt b.txt b.txt文件中只出现过一次的内容,因为有两个b.txt所以只会输出只在a.txt出现过一次的内容,即是a.txt-b.txt差集

对于b.txt-a.txt为同理

Jps命令—使用详解

jps是jdk提供的一个查看当前Java进程的小工具, 可以看做是JavaVirtual Machine Process Status Tool的缩写。非常简单实用。

命令格式:jps [options ] [ hostid ]
[options]选项 :
-q:仅输出VM标识符,不包括classname,jar name,arguments in main method
-m:输出main method的参数
-l:输出完全的包名,应用主类名,jar的完全路径名
-v:输出jvm参数
-V:输出通过flag文件传递到JVM中的参数(.hotspotrc文件或-XX:Flags=所指定的文件
-Joption:传递参数到vm,例如:-J-Xms512m

[hostid]:
[protocol:][[//]hostname][:port][/servername]
命令的输出格式 :
lvmid [ [ classname| JARfilename | “Unknown”] [ arg* ] [ jvmarg* ] ]

curl 多参数 GET访问异常

例如
url 为 http://mywebsite.com/index.PHP?a=1&b=2&c=3
web形式下访问上述地址服务器可以获取到所有的参数

然而在Linux下输入命令:
curl http://mywebsite.com/index.php?a=1&b=2&c=3
服务器则 只能获取到参数a。因为url中有字符&,然而linux系统中命令后面添加&意思是使进程后台运行,导致服务器获取不到后面的参数。所以只需将&转义既可。
curl http://mywebsite.com/index.php?a=1\&b=2\&c=3


curl 命令参数解析

  • -o:将文件保存为命令行中指定的文件名的文件中
  • -O:使用URL中默认的文件名保存文件到本地
  • -# 输出 ###…… 显示当前命令处理进度

应用实例:

curl -o index.html.t  -# http://www.baidu.com
######################################## 100.0%

linux 删除N天前的文件

  • find 对应目录 -mtime +天数 -name "文件名" -exec rm -rf {} \;
  • 删除一周前日志文件:
    alias rmlogsev="find -mtime +7 -name '*log*'|xargs rm -v"

查找大文件

  • find . -type f -size +800M #搜索当前目录下,超过800M大小的文件
  • find . -type f -size +800M -print0 | xargs -0 ls -l#查找并显示详细信息
  • find . -type f -size +800M -print0 | xargs -0 du -h | sort -nr #显示文件大小,并倒叙显示

vim 可以多强大

[知乎问答]:(https://www.zhihu.com/question/20151659)

  • 简单几项
set list
set listchars=tab:▸\ , " 设置 tab 标识,用于区分空格

set tabstop=4 " 设置tab 占用空格数
set nu " 显示行号
set smartindent " 开启新行时使用智能自动缩进
set cursorline " 突出显示当前行

set laststatus=2 " 显示状态栏 (默认值为 1, 无法显示状态栏)
set statusline=\ %<%F[%1*%M%*%n%R%H]%=\ %y\ %0(%{&fileformat}\ %{&encoding}\ %c:%l/%L%)\ " 设置在状态行显示的信息
  • 文件 Tab 和 空格 转换
对于已保存的文件,可以使用下面的方法进行空格和TAB的替换:
TAB替换为空格:
    :set ts=4
    :set expandtab
    :%retab!
空格替换为TAB:
    :set ts=4
    :set noexpandtab
    :%retab!
加!是用于处理非空白字符之后的TAB,即所有的TAB,若不加!,则只处理行首的TAB

晒晒我的linux alias文件

alias '...'="cd ../.."  
alias -- -="cd -" #返回上次操作目录
alias lt='ls -lhrt --color=auto'        #sort by date    最常用到,ls -rt,按修改时间查看目录下文件  
alias psg='ps aux | grep -v grep | grep -i --color' # 查看进程信息
alias cds='echo "`pwd`" > ~/.cdsave'  #cd save : save where i am  
alias cdb='cd "`cat ~/.cdsave`"' 
alias bashrc='vim ~/.bashrc && source ~/.bashrc'  #编辑并立即生效


#打印系统时间
curTime(){
   echo $(_trace `date "+%Y-%m-%d %H:%M:%S"`)
}
# 快速根据进程号pid杀死进程,如 psid tomcat, 然后 kill9 两个tab键提示要kill的进程号
alias kill9='kill -9';
psid() {
  [[ ! -n ${1} ]] && return;   # bail if no argument
  pro="[${1:0:1}]${1:1}";      # process-name –> [p]rocess-name (makes grep better)
  ps axo pid,user,command | grep -v grep |grep -i --color ${pro};   # show matching processes
  pids="$(ps axo pid,user,command | grep -v grep | grep -i ${pro} | awk '{print $1}')";   # get pids

# 自动在文件末尾加上 .bak-日期 来备份文件,如 bu nginx.conf¬
bak() { cp "$@" "$@.bak"-`date +%y%m%d`; echo "`date +%Y-%m-%d` backed up $PWD/$@"; }

shell变量里的字符串替换

  • 简单替换
b=${a/123/321};将${a}里的第一个123替换为321

b=${a//123/321};将${a}里的所有123替换为321
  • 文件URL解析
file=/dir1/dir2/dir3/my.file.txt
echo ${file#*/} # dir3/my.file.txt
echo ${file##*/} # my.file.txt
echo ${file##*.} # txt
echo ${file%.*} # /dir1/dir2/dir3/my.file
echo ${file%/*} # /dir1/dir2/dir3

总结:
`#`截去左边 `%` 截去右边 
 一个字母最短匹配,两个字母最长匹配
  • 默认值设置、简单判断在返回
${var:-string},${var:+string},${var:=string},${var:?string}

${var:=string}很常用的一种用法: 判断某个变量是否赋值,没有的话则给它赋上一个默认值。
${var:+string}的替换规则和上面的相反,即只有当var不是空的时候才替换成string

让 shell 脚本在关键语句出错时终止执行

  • 函数定义
function _do()
{
    "$@" || { echo "exec failed: ""$@"; exit -1; }
}
function _do_ex()#针对管道命令
{
    eval "$1" || { echo "exec failed: ""$1"; exit -1; }
}
  • 使用方法
    1. kill -9 $1 || exit -1
    2. _do cmd # alert and exit when failed

Linux 技巧:让进程在后台可靠运行的几种方法

  • 通过下面方式执行任务

    1. nohup ping www.google.com &
    2. setsid ping www.google.com
    3. (ping www.google.com &)
  • 使正在运行程序改为后台运行(补救)

    1. disown -h %1 # job id
  • 批量进行后台任务

    1. screen -r newSessionName

另请参考:
shell中的各种括号的使用方法

你可能感兴趣的:(Linux,shell,linux)