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中的各種括號的使用方法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章