背景:可能我們會遇到獲取Linux命令執(zhí)行結(jié)果的某一列或某一行的信息。
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名與空間、虛擬主機(jī)、營銷軟件、網(wǎng)站建設(shè)、樂至網(wǎng)站維護(hù)、網(wǎng)站推廣。
awk -F? '\t'? '{print $1}'? name.txt
其中-F表示分割符,本例為\t,$1表示第1列 ,$0表示全部。
ls -lrt? | awk -F ' ' '{print $NF}'
好處:這種情況下不需要知道所獲取信息在哪一列,直接取最后一列即可。
其中-F表示分割符,本例為空格,$NF表示最后一列,$(NF-1)表示倒數(shù)第二列。
awk 'NR awk 'NR==1,NR==4 {print}'? file
行號等于1和4的打印出來
awk 'END {print}' name.txt
部分參考
下面是代碼:
#/bin/sh
touch data2
echo -e "品牌,銷量\nhuawei,1000\niphone,1500\nvivo,1600\nLenovo,2000\nSamsung,4000" data2
cat data2
cat data2 | awk -F, '{sum+=$2} END {print "季度總銷量為: "sum}'
--------------------
*.data2是用命令建的,內(nèi)容也是用命令寫入的,格式應(yīng)該也不是太好,你追問吧,看看哪不符合要求
cat file.csv | awk -F '\t' '{print $2}'
'\t'指的是file.csv不同列以'\t'分割,如果的是以其他符號分割,換成其她符號;
'{print $2}'是指取第2列,此處從1開始計(jì)數(shù),第1列,第2列;
一般去重之前要進(jìn)行排序
cat file.csv | awk -F '\t' '{print $2}'?| sort | uniq
前半部分與命令1一樣,后面加上| sort | uniq
比如通過命令2發(fā)現(xiàn),第2列取值有兩種,分別是'neg'和‘pos’,那么我想知道有多少行的第2列取值為'pos',多少行的第2列取值為'neg'。
cat file.csv | awk -F '\t' '{print $2}'?|?grep -o 'neg'| wc -l
前半部分與命令1一樣,后面加上?|?grep -o 'neg'| wc -l
grep -o 'neg'就是取出取值為'neg'的行
wc -l 是計(jì)數(shù)有多少行
額,目測沒有這樣的程序。
不過可以自己寫一個(gè)c的實(shí)現(xiàn)
#include?stdio.h
#include?stdlib.h?
int?main(int?argc,?char?*argv[])
{
int?i,?res?=?0;?
for?(i?=?1;?i??argc;?i++)
res?+=?atoi(argv[i]);
printf("%d",?res);?
return?0;?
}
匆忙寫的,可能有問題,見諒。
編譯后用 ./a.out 1 2 3 4 5...... numberN調(diào)用即可。