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是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* ] ]
例如
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%
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 #显示文件大小,并倒叙显示
[知乎问答]:(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替换为空格:
:set ts=4
:set expandtab
:%retab!
空格替换为TAB:
:set ts=4
:set noexpandtab
:%retab!
加!是用于处理非空白字符之后的TAB,即所有的TAB,若不加!,则只处理行首的TAB。
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/$@"; }
b=${a/123/321};将${a}里的第一个123替换为321
b=${a//123/321};将${a}里的所有123替换为321
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
function _do()
{
"$@" || { echo "exec failed: ""$@"; exit -1; }
}
function _do_ex()#针对管道命令
{
eval "$1" || { echo "exec failed: ""$1"; exit -1; }
}
kill -9 $1 || exit -1
_do cmd # alert and exit when failed
通过下面方式执行任务
nohup ping www.google.com &
setsid ping www.google.com
(ping www.google.com &)
使正在运行程序改为后台运行(补救)
disown -h %1 # job id
批量进行后台任务
screen -r newSessionName
另请参考:
shell中的各种括号的使用方法