文件求交、並、差集
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
-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; }
}
- 使用方法
kill -9 $1 || exit -1
_do cmd # alert and exit when failed
Linux 技巧:讓進程在後臺可靠運行的幾種方法
通過下面方式執行任務
nohup ping www.google.com &
setsid ping www.google.com
(ping www.google.com &)
使正在運行程序改爲後臺運行(補救)
disown -h %1 # job id
批量進行後臺任務
screen -r newSessionName
另請參考:
shell中的各種括號的使用方法