cut、tee、split、xargs、bc命令
原文地址:http://blog.csdn.net/bytxl/article/details/24987407
一、cut命令
cut 主要的用途在于將一行里面的數(shù)據(jù)進行分解,最常使用在分析一些數(shù)據(jù)或文字?jǐn)?shù)據(jù)的時候!這是因為有時候我們會以某些字符當(dāng)作分割的參數(shù),然后來將數(shù)據(jù)加以切割,以取得我們所需要的數(shù)據(jù)。
? 命令格式:
? cut -d "分隔字符" [-cf] fields
? -d :后面接的是用來分隔的字符,默認(rèn)是空格符
? -c :后面接的是第幾個字符
? -f :后面接的是第幾個區(qū)塊(列)?
? cat /etc/passwd | cut -d ":" -f 1
? last | cut -d “ ” -f1 //以空格符為分隔,并列出第一列
? last | cut -c1-20 //將 last 之后的數(shù)據(jù),每一行的 1-20 個
? 字符取出來
二、tee命令
?? 將數(shù)據(jù)輸出重定向到文件的時候,屏幕上就不會出現(xiàn)任何的數(shù)據(jù)!那么如果我們需要將數(shù)據(jù)同時顯示在屏幕上跟檔案中呢?這個時候就需要 tee 這個指令。
??? last | tee last.list | cut -d " " -f1
三、split命令
??? 將大的文件分割成小的文件
??? -b size 來將一個分割的文件限制其大小
??? -l line以行數(shù)來分割
??? split -l 5 /etc/passwd test <==會產(chǎn)生testaa, testab, testac... 等等的小文件
dd if=/dev/zero bs=1000k count=10 of =1.date
split -b 1000000 1.dat abc
四、xargs
??? xargs從標(biāo)準(zhǔn)輸入中接受單詞列表的命令,并把 這些單詞作為參數(shù)傳遞給指定的命令
??? ls |xargs rm//把ls列出的內(nèi)容再通過rm刪除可以每次刪除一部分文件
??? ls |xargs –n 2 rm
??? ls | xargs –n 2 echo “==>”
? ? 有時目錄里文件太多了不能使用rm *刪除這時
? ? ls | grep ‘^abc’ |xargs –n 20 rm
???
??? ls abcd*|xargs -i cp {} /tmp
五、bc命令
??? bc命令:進行算術(shù)運算,但不限于整數(shù)運算
??? $bs
? ? scale=4 //表示計算結(jié)果保留4位小數(shù)
? 2+3
? 2-3
? 2*3
? 8/3
? quit
??? bc還可以用在shell變量賦值中
? ABC=`echo “scale=4;8/3” | bc`
? echo $ABC
====================================
shell字符串操作:
前景色:30 黑色 31紅色? 32綠色? 33黃色? 34藍色? 35紫紅? 36青色? 37白色
背景色:40 ??????? ?41?????? ? 42??????? ?43??????? ?44??????? ?45??????? ?46??????? ?47
echo -e "\033[32;40m"ok "\033[0m"
#!/bin/bash
a="**********************************************"
for i in {30..37}
do
??????? for n in {40..47}
??????? do
??????? echo -e "\033[$i;${n}m"$a"\033[0m"
done
done
----------------------------------
[root@localhost ~]# path=$PATH
[root@localhost ~]# echo $path
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin
[root@localhost ~]# echo ${path#/*kerberos} <---1個#是最小匹配從前向后刪除
/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin
[root@localhost ~]# echo ${path##/*kerberos} <---2個#是最大匹配從前向后刪除
/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin
[root@localhost ~]# echo ${MAIL%r*}<------%是從后向前刪除
/var/spool/mail/
[root@localhost ~]# echo ${MAIL%%r*}<----%%是最大匹配
/va
[root@localhost ~]# echo ${#MAIL}<----統(tǒng)計變量字符長度
20
統(tǒng)計字符小于30的行就添加一個空行
#!/bin/bash
while read line
do
??????? a=${#line}
??????? echo $line
??????? if [ $a -lt 30 ];then
??????????????? echo
??????? fi
done < $1
~??????????
?echo ${path/bin/BIN}<-----把第1個bin替換成BIN
/usr/kerberos/sBIN:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin
echo ${path//bin/BIN}<-----加2個//表示全部替換
/usr/kerberos/sBIN:/usr/kerberos/BIN:/usr/local/sBIN:/usr/local/BIN:/sBIN:/BIN:/usr/sBIN:/usr/BIN:/usr/X11R6/BIN:/root/BIN
echo ${abc//[0-9]/}
判斷輸入的是數(shù)字還是字符串
??? #!/bin/bash
??? read -p "please input:" a
??? b=${a//[0-9]/}
??? if [ -z $b ];then
??????? echo "your input is number!"
??? fi
var=${str:-newvar} 當(dāng)str是空的時候 var=newvar ,str不為空的時候var=$str
var=${str:=newvar} 當(dāng)str是空的時候 var=newvar str=newvar ,str不為空的時候var=$str
創(chuàng)建文件如果不輸入文件名則默認(rèn)創(chuàng)建abc這個文件。
#!/bin/bash
read -p " please create file [abc] :" f
?a=${f:-abc}
cd /tmp
touch $a
-------
#!/bin/bash
read -p " please create file [abc] :" f
?a=${f:-abc}
?b=`date --date="1 days ago" +%F`
?c=`date --date="2 days ago" +%F`
?d=`date +%F`
cd /tmp
touch $a.{$b,$c,$d}
備份/root目錄下的 sh文件到/tmp/backup用時間創(chuàng)建文件夾 再次備份時比較文件更新時間,比上一次新的才備份
#!/bin/bash
a=/tmp/backup/`date +%F.%H:%M`
cd /root
if [ ! -e $a ];then
??????? mkdir -p $a
fi
for i in `find *.sh`
?do
???????? find /tmp/backup -newer $i | grep -q $i
??????? if [ $? -ne 0 ];then
??????? cp $i $a/$i
??????? fi
done
總結(jié)
以上是生活随笔為你收集整理的cut、tee、split、xargs、bc命令的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux xargs命令的使用及其与e
- 下一篇: xargs用法