獲取檔案的第m行到最後一行
cat *** | tail -n +m
獲取檔案的第n行 第n列
#獲取第五行資料
cat *** |
sed -n '5p'
#獲取第n列資料
cat *** |
awk''
字串分割
使用ifs分割字串時。分割完及時將ifs的值還原。否則每次獲取變數的時候都會分割。(多麼痛的領悟)
#舊ifs備份
old_ifs=
$#指定新的分割符
ifs=
","#切割字串
strarr=($
)#還原ifs的值
ifs=
$
xargs命令
本命令原帖:
一下記錄是便於自己理解的整理。
簡單來說,就是將管道符前傳遞過來的資料當成引數(大約可以這麼理解)。例如:echo 「–help」 | cat 這個命令會輸出–help。但是,當寫成這樣:echo 「–help」|xargs cat執行後,會輸出cat的使用文件。原因是,將–help標準輸入當成cat的引數來使用。
-d:指定標準輸入資料的間隔
例:echo 「123@123」 | xargs -d 『@』 echo會輸出123 123。不指定-d的時候直接輸出123@123
-n:指定引數數量。
例:echo"123@123@123@123" | xargs -d 『@』 -n 2 echo管道符後的echo命令會執行兩次。前乙個echo標準輸入的引數123 123 123 123會被xargs每兩個呼叫後乙個echo命令一次。
-e:用於搜尋標準輸入的資料。不能與-d一起使用。
例:echo 「123 123 33 123 123」 | xargs -e 『33』 echo時。只會輸出123 123。忽略33及之後的資料。
-i/-l:用於填充資料。區別在於-i不需要指定替換的位置,直接替換在{}中。-l需要指定替換的內容。
例:find . -type f -name 「* .log」 | xargs -i cp {} /tmp/
find . -type f -name 「* .log」 | xargs -i {} cp {} /tmp/
:>/tmp/test.txt
檔案test.txt如果存在就清空檔案中內容,如果不存在就建立檔案。
處理資料管道符後接head命令要注意
類似sed命令、tr命令之類的處理資料的命令,後銜接head命令可能會導致報錯。可以將兩個命令位置對調解決。原因貌似是因為前乙個命令沒有將資料處理完,head擷取時導致的錯誤,如果有大大知道原因,歡迎點出。
linux中各種判斷
[ -a file ] 如果 file 存在則為真。
[ -b file ] 如果 file 存在且是乙個塊特殊檔案則為真。
[ -c file ] 如果 file 存在且是乙個字特殊檔案則為真。
[ -d file ] 如果 file 存在且是乙個目錄則為真。
[ -e file ] 如果 file 存在則為真。
[ -f file ] 如果 file 存在且是乙個普通檔案則為真。
[ -g file ] 如果 file 存在且已經設定了sgid則為真。
[ -h file ] 如果 file 存在且是乙個符號連線則為真。
[ -k file ] 如果 file 存在且已經設定了粘制位則為真。
[ -p file ] 如果 file 存在且是乙個名字管道(f如果o)則為真。
[ -r file ] 如果 file 存在且是可讀的則為真。
[ -s file ] 如果 file 存在且大小不為0則為真。
[ -t fd ] 如果檔案描述符 fd 開啟且指向乙個終端則為真。
[ -u file ] 如果 file 存在且設定了suid (set user id)則為真。
[ -w file ] 如果 file 如果 file 存在且是可寫的則為真。
[ -x file ] 如果 file 存在且是可執行的則為真。
[ -o file ] 如果 file 存在且屬有效使用者id則為真。
[ -g file ] 如果 file 存在且屬有效使用者組則為真。
[ -l file ] 如果 file 存在且是乙個符號連線則為真。
[ -n file ] 如果 file 存在 and has been mod如果ied since it was last read則為真。
[ -s file ] 如果 file 存在且是乙個套接字則為真。
[ file1 -nt file2 ] 如果 file1 has been changed more recently than file2, or 如果 file1 exists and file2 does not則為真。
[ file1 -ot file2 ] 如果 file1 比 file2 要老, 或者 file2 存在且 file1 不存在則為真。
[ file1 -ef file2 ] 如果 file1 和 file2 指向相同的裝置和節點號則為真。
[ -o optionname ] 如果 shell選項 「optionname」 開啟則為真。
[ -z string ] 「string」 的長度為零則為真。 字串為空即null時為真。
[ -n string ] or [ string ] 「string」 的長度為非零 non-zero則為真。加-n與不加-n結果相同。
[ string1 == string2 ] 如果2個字串相同。 「=」 may be used instead of 「==」 for strict posix compliance則為真。
[ string1 != string2 ] 如果字串不相等則為真。
[ string1 < string2 ] 如果 「string1」 sorts before 「string2」 lexicographically in the current locale則為真。
[ string1 > string2 ] 如果 「string1」 sorts after 「string2」 lexicographically in the current locale則為真。
迴圈檔案find /***x/xx/xx/***/*** -type f |
while
read line ;
do#資料處理
done
#管道中迴圈資料
echo
"1 2 3"
|while
read line ;
doecho$;
done
shell獲取時間用# 獲取一年前的當前時間
date -d "-1 year" +%y%m%d
date -d "-1 month" +%y%m%d
date -d "-1 day" +%y%m%d
#獲取當月一年前的第一天
date -d "-1 year" +%y%m"01"
#獲取當前時間
date +%y%m%d
json格式文字處理
使用jq命令讀取及修改json資料
#從json文字中讀取資料
#讀取結果為純文字
cattest
| jq -r ".key"
#讀取結果為帶格式文字
cattest
| jq ".key"
#更換json文字中的資料;value可以是變數$
cattest
| jq ".key=value"
#或者;當key為paramname時,替換值為value
cattest
| jq 'to_entries |map (if .key=="paramname" then . + else . end )|from_entries'
Linux中的In命令
ln是 linux 中乙個非常重要命令。它的功能是為某乙個檔案在另外乙個位置建立乙個同步的鏈結,這個命令最常用的引數是 s,具體用法是 ln s 原始檔 目標檔案 s 是 symbolic的意思。例 ln s lib lsb usr lj 即 在usr目錄下建立指向 lib lsb目錄的lj檔案。當...
Linux中的In命令
ln是 linux 中乙個非常重要命令。它的功能是為某乙個檔案在另外乙個位置建立乙個同步的鏈結,這個命令最常用的引數是 s,具體用法是 ln s 原始檔 目標檔案 s 是 symbolic的意思。例 ln s lib lsb usr lj 即 在usr目錄下建立指向 lib lsb目錄的lj檔案。當...
Linux中的In命令
ln是linux中乙個非常重要命令。它的功能是為某乙個檔案在另外乙個位置建立乙個同步的鏈結,這個命令最常用的引數是 s,具體用法是 ln s 原始檔 目標檔案 s 是 symbolic的意思。例 ln s lib lsb usr lj 即 在usr目錄下建立指向 lib lsb目錄的lj檔案。當我們...