日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

cut、tee、split、xargs、bc命令

發(fā)布時(shí)間:2025/3/21 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cut、tee、split、xargs、bc命令 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

原文地址:http://blog.csdn.net/bytxl/article/details/24987407

一、cut命令

cut 主要的用途在于將一行里面的數(shù)據(jù)進(jìn)行分解,最常使用在分析一些數(shù)據(jù)或文字?jǐn)?shù)據(jù)的時(shí)候!這是因?yàn)橛袝r(shí)候我們會(huì)以某些字符當(dāng)作分割的參數(shù),然后來將數(shù)據(jù)加以切割,以取得我們所需要的數(shù)據(jù)。

? 命令格式:

? cut -d "分隔字符" [-cf] fields

? -d :后面接的是用來分隔的字符,默認(rèn)是空格符

? -c :后面接的是第幾個(gè)字符

? -f :后面接的是第幾個(gè)區(qū)塊(列)?

? cat /etc/passwd | cut -d ":" -f 1

? last | cut -d “ ” -f1 //以空格符為分隔,并列出第一列

? last | cut -c1-20 //將 last 之后的數(shù)據(jù),每一行的 1-20 個(gè)

? 字符取出來

二、tee命令

?? 將數(shù)據(jù)輸出重定向到文件的時(shí)候,屏幕上就不會(huì)出現(xiàn)任何的數(shù)據(jù)!那么如果我們需要將數(shù)據(jù)同時(shí)顯示在屏幕上跟檔案中呢?這個(gè)時(shí)候就需要 tee 這個(gè)指令。

??? last | tee last.list | cut -d " " -f1

三、split命令

??? 將大的文件分割成小的文件

??? -b size 來將一個(gè)分割的文件限制其大小

??? -l line以行數(shù)來分割

??? split -l 5 /etc/passwd test <==會(huì)產(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 “==>”

? ? 有時(shí)目錄里文件太多了不能使用rm *刪除這時(shí)

? ? ls | grep ‘^abc’ |xargs –n 20 rm

???

??? ls abcd*|xargs -i cp {} /tmp

五、bc命令

??? bc命令:進(jìn)行算術(shù)運(yùn)算,但不限于整數(shù)運(yùn)算

??? $bs

? ? scale=4 //表示計(jì)算結(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藍(lán)色? 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個(gè)#是最小匹配從前向后刪除

/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個(gè)#是最大匹配從前向后刪除

/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)計(jì)變量字符長度

20

統(tǒng)計(jì)字符小于30的行就添加一個(gè)空行

#!/bin/bash

while read line

do

??????? a=${#line}

??????? echo $line

??????? if [ $a -lt 30 ];then

??????????????? echo

??????? fi

done < $1

~??????????

?echo ${path/bin/BIN}<-----把第1個(gè)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個(gè)//表示全部替換

/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是空的時(shí)候 var=newvar ,str不為空的時(shí)候var=$str

var=${str:=newvar} 當(dāng)str是空的時(shí)候 var=newvar str=newvar ,str不為空的時(shí)候var=$str

創(chuàng)建文件如果不輸入文件名則默認(rèn)創(chuàng)建abc這個(gè)文件。

#!/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用時(shí)間創(chuàng)建文件夾 再次備份時(shí)比較文件更新時(shí)間,比上一次新的才備份

#!/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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。