国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

linux中awk排除某列輸出的實(shí)現(xiàn)示例

2019-11-14 08:56:59
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

linux中awk排除某列輸出的實(shí)現(xiàn)示例

awk是一款不錯(cuò)的工具了我們可以利用awk來(lái)進(jìn)行篩選了下面我們一起來(lái)看一篇關(guān)于awk排除某列輸出一個(gè)命令操作方式,具體的如下。

awk工具在文本處理上非常強(qiáng)大,我們常用的用法是選擇某列輸出,如PRint $1,$3 。不過(guò)在特殊的情況下,也會(huì)遇到只排除例個(gè)某列,其他列都正常輸出 。針對(duì) awk排除某列,這里就做個(gè)小總結(jié)。 比如我的文件如下:

[root@361way tmp]# more disk_ioxvda 1.49 2.37 11.71 10615426 52410436xvdb 3.50 6.60 80.08 29535297 358410976xvda 0.00 0.00 0.00 0 0xvdb 5.05 12.12 72.73 12 72

排除第一列(打印第2列到最后):

awk '{$1=""; print $0}' 文件名

排除多列:

awk '{$1=$2=""; print $0}' 文件名

以上這種寫法感覺(jué)是比較好的,不過(guò)如果前面排除的列比較多,且按順序過(guò)來(lái)的,可以使用如下的方法 ,比較方便:

awk '{for(i=2;i<=NF;i++){printf "%s ", $i}; printf "/n"}'awk '{out=$2; for(i=3;i<=NF;i++){out=out" "$i}; print out}'awk '{print substr($0,length($1)+1);}'awk '{ORS=" "; for(i=4;i<=NF;i++) print $i;print "/n"}'awk '{sub(/([^ ]+ +){3}/,"")}1'

還有其他一些衍生寫法如下:

awk '{sub(/[^ ]+ /, ""); print $0}'awk '{$1=$2=$3=""}sub("^"FS"*","")'awk -v n=3 '{ for (i=n+1; i<=NF; i++){printf("%s%s",$i,i==NF?RS:OFS);} }'

也可以通過(guò)一個(gè)腳本進(jìn)行引用搞定,如下: 腳本1:

[root@361way tmp]# cat cols.sh#!/bin/bashawk -v s=$1 '{for(i=s; i<=NF;i++) printf "%-5s", $i; print "" }'# 進(jìn)行切分操作的命令如下:# cat 文件名 | ./cols.sh 3# cat 文件名 | ./cols.sh 5

腳本2: 腳本1還可以做下午簡(jiǎn)單的修改,變成腳本2,可以指定一個(gè)范圍,如下:

#!/bin/bashawk -v s=$1 -v e=$2 '{for(i=s; i<=e;i++) printf "%-5s", $i; print "" }'

使用命令如下:

echo "1 2 3 4 5 6 7 8 9 10 11 12 13 14" | ./cols.sh 7 9
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 拉孜县| 江达县| 崇左市| 忻州市| 玉林市| 贵州省| 德阳市| 绍兴县| 东丽区| 抚州市| 麦盖提县| 汉寿县| 乡宁县| 衢州市| 桐城市| 洛阳市| 麻城市| 仪陇县| 德清县| 乌拉特前旗| 纳雍县| 保山市| 开原市| 西宁市| 绥阳县| 淮南市| 莎车县| 潜山县| 罗山县| 大港区| 蛟河市| 孝昌县| 峨眉山市| 乌鲁木齐县| 五莲县| 即墨市| 从化市| 青浦区| 石阡县| 柏乡县| 钟祥市|