国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 集贤县| 刚察县| 平遥县| 兴宁市| 连平县| 通海县| 安丘市| 民丰县| 芒康县| 新乐市| 永清县| 丰台区| 浦北县| 大理市| 辽阳市| 当阳市| 毕节市| 玉林市| 包头市| 淳化县| 宁津县| 宿迁市| 攀枝花市| 司法| 金堂县| 灵丘县| 滨州市| 炎陵县| 马关县| 科技| 尚义县| 成安县| 来安县| 株洲县| 光泽县| 石林| 朝阳市| 包头市| 宁河县| 山阴县| 郸城县|