[Сделать это ясно, чтобы сказать это! Linux] важный инструмент для сотрудников (два) - AWK обработки текстов инструмента для борьбы

Содержание:
(IX) слияния двух файлов
(X) для установки разрешений на NFS
(XI) пересечения
(ХII) число символов , которые появляются статистики
(XIII) сумма
(ХIV) реальный случай


(Ix) слияние двух файлов
(9.1) Сначала мы определяем a1 и a2 два файла в системе, и теперь мы должны использовать второе поле a1 а2 , чем второе поле, если же, то a1 первого поля для третьего поля добавляется файл a2, a2 в конечном итоге распечатать информацию , соответствующую файлу в качестве шаблона, если множество файлов могут быть объединены , чтобы рассмотреть массив
# AWK -F «[,]» «NR == ПЧН {а [$ 2] = $. 1} NR! = ПЧН {Печать $ 0, а [$ 2]} «A1 A2
[Сделать это ясно, чтобы сказать это!  Linux] важный инструмент для сотрудников (два) - AWK обработки текстов инструмента для борьбы
[Сделать это ясно, чтобы сказать это!  Linux] важный инструмент для сотрудников (два) - AWK обработки текстов инструмента для борьбы
[Сделать это ясно, чтобы сказать это!  Linux] важный инструмент для сотрудников (два) - AWK обработки текстов инструмента для борьбы
(9.2) мы создаем два файла b1 и b2, и теперь мы хотим два файла в следующем формат, мы находим вторую строку и первый столбец b2, b1 является общим пунктом, то мы не в то время , когда NR FNR будет работать печать, не забудьте использовать между полями «:» разделенное двоеточием.
Результаты , которые мы хотим напечатать следующим образом :
Том: 001: AA
Том: 001: BB
Боб: 002: CC
Боб: 002: дд
# AWK -F :! «NR == ПЧН {A [$ 2] = $ 0} NR = ПЧН { Печать [$ 1] ":" $ 2} «B1 B2
[Сделать это ясно, чтобы сказать это!  Linux] важный инструмент для сотрудников (два) - AWK обработки текстов инструмента для борьбы
[Сделать это ясно, чтобы сказать это!  Linux] важный инструмент для сотрудников (два) - AWK обработки текстов инструмента для борьбы
[Сделать это ясно, чтобы сказать это!  Linux] важный инструмент для сотрудников (два) - AWK обработки текстов инструмента для борьбы
(9.3) мы создаем c1 и c2 файл, то же самое , если с1 $ 1 и с2 $ 3, так же , как последние три символа c1, $ 2 и с2 $ 4, c1, c2 те же $ 3 и $ 6, а затем c2 в квалификации строк печати, если требование более общие столбцы скрининга, до тех пор , как мы помещаем несколько столбцов сливаются вместе , чтобы сравнить. Мы обнаружили , что в колонке 1 c1 плюс первые два после первых трех плюс файл с2 плюс первые четыре из шести плюс три символа из трех, если это то же самое, то в соответствии со спросом, вы можете быть c2 файлы в текущей строке печатается.
# AWK «NR == FNR {а [$ 1] = $ 1 $ 2 $ 3} NR = FNR {Х = зиЬзЬг ($ 4,3) ;! Y = $ 3X $ 6; если (Y == а [$ 3]) {Печать} } '
[Сделать это ясно, чтобы сказать это!  Linux] важный инструмент для сотрудников (два) - AWK обработки текстов инструмента для борьбы
[Сделать это ясно, чтобы сказать это!  Linux] важный инструмент для сотрудников (два) - AWK обработки текстов инструмента для борьбы
[Сделать это ясно, чтобы сказать это!  Linux] важный инструмент для сотрудников (два) - AWK обработки текстов инструмента для борьбы
(9.4) мы создаем файл d1 и d2, d2 в это время мы хотим , чтобы заменить файл во втором поле для вторых поля d1 файлов, мы должны прежде всего обратить внимание на первое с d1 d2 затем использовать при использовании имени файла, указать , вход и выход для разделителя «:» толстой кишки, а затем выполнить операцию замены во втором документе d2 поля d1 в файл второго поля.
# Awk -F: 'BEGIN {FS = OFS = ":"}! NR == FNR {а [$ 1] = $ 2} = NR FNR {$ 2 = а [$ 1]; печать}' d2 d1
[Сделать это ясно, чтобы сказать это!  Linux] важный инструмент для сотрудников (два) - AWK обработки текстов инструмента для борьбы
[Сделать это ясно, чтобы сказать это!  Linux] важный инструмент для сотрудников (два) - AWK обработки текстов инструмента для борьбы
[Сделать это ясно, чтобы сказать это!  Linux] важный инструмент для сотрудников (два) - AWK обработки текстов инструмента для борьбы


(X) в одной и той же строке, что и в одной строке
(10.1) мы создаем текстовый файл AA1, теперь нам нужно, чтобы объединить файл с одной и той же строке в поле в строке, например, первая строка первого поля 27, то второй линия 27 является первым полем, то информации о второй строке второго поля прямых позиций печати первой строки в трех областях, первое поле в третьей строке 26, так что следующая строка для печати непосредственно вперед. Во- первых, использование NR равно 1, определяется, если NR является текущая строка и первый печатный линии первого поля присваивается переменной х, то во втором ряду, NR найден не равен 1, но второй ряд поле , равное значению переменного х, поэтому в это время печати «% S» формат , используя PRINTF, а затем иметь дело с третьей строкой, мы обнаружили , что в соответствии с «еще если ($ 1! = х)» этим условием, поэтому на этот раз мы будем первыми Печать символа новой строки «\ п» , а затем распечатать всю строку и присвоить текущую строку в поле переменных х, так что мы можем достичь основного формата нам нужны.
# Awk «NR == 1 {Printf "% s", $ 0, х = $ 1}! (! $ 1 = х) NR = 1 {если ($ 1 == х) {Printf "% s", $ 2} еще если { Printf "\ п% s", $ 0; х = $ 1}} END {Printf AA1 "\ п"}»
[Сделать это ясно, чтобы сказать это!  Linux] важный инструмент для сотрудников (два) - AWK обработки текстов инструмента для борьбы
[Сделать это ясно, чтобы сказать это!  Linux] важный инструмент для сотрудников (два) - AWK обработки текстов инструмента для борьбы


(十一)求交集
(11.1)现在我们创建了两个文件a1和a2,现在要求打印a1文件中的一些行,a1的第2字段出现在a2的第1个字段中,现在如果要求a的某部分是否出现在b的某部分里的时候,那么我们就把b的那部分设置为数组的下标,然后判断a的那部分是否是下标的一个元素。此时则应该为“awk -F”[,/]” ‘’ a2 a1”
# awk -F"[,/]" 'NR==FNR{a[$1]=$0}NR!=FNR{if($2 in a){print $0}}' a2 a1
[Сделать это ясно, чтобы сказать это!  Linux] важный инструмент для сотрудников (два) - AWK обработки текстов инструмента для борьбы
[Сделать это ясно, чтобы сказать это!  Linux] важный инструмент для сотрудников (два) - AWK обработки текстов инструмента для борьбы
[Сделать это ясно, чтобы сказать это!  Linux] важный инструмент для сотрудников (два) - AWK обработки текстов инструмента для борьбы
(11.2)现在我们创建两个文件b1和b2,现在我们的需求是打印b1的一些行,b1的$1出现在b2的第1个字段里,找到那些行之后,并把b2里对应的这些行的$2部分进行求和,我们可以先在b2文件中将所有的第1字段的第2个字段值进行相加操作,最后在b1文件行打印出来时也把相加的值一同打印出来。
# awk -F, 'NR==FNR{a[$1]+=$2}NR!=FNR{if($1 in a){printf "%s,%f\n",$0,a[$1]}}' b2 b1
[Сделать это ясно, чтобы сказать это!  Linux] важный инструмент для сотрудников (два) - AWK обработки текстов инструмента для борьбы
[Сделать это ясно, чтобы сказать это!  Linux] важный инструмент для сотрудников (два) - AWK обработки текстов инструмента для борьбы
[Сделать это ясно, чтобы сказать это!  Linux] важный инструмент для сотрудников (два) - AWK обработки текстов инструмента для борьбы


(十二)统计字符出现的次数
(12.1)我们有一个文件a1,现在我们需要统计每个字符在文本文件中出现的次数,此时我们的思路是遇到一个字段就将其设置为一个元素的下标,当我们已经定义了一个元素时,如果下次再遇到这个下标的元素的时候,则加上1次。我们首先是使用循环遍历每一行,使用遍历的字段作为数组的下标,如果后面出现了相同的字段,则将统计的结果加1,然后在END中去遍历数组中每个元素当前的数值,此时就可以得到每个字符在文本文件中出现的次数。
# awk '{for(i=1;i<=NF;i++){a[$i]++}}END{for(x in a){print x"一共出现了"a[x]"次"}}' a1
[Сделать это ясно, чтобы сказать это!  Linux] важный инструмент для сотрудников (два) - AWK обработки текстов инструмента для борьбы
[Сделать это ясно, чтобы сказать это!  Linux] важный инструмент для сотрудников (два) - AWK обработки текстов инструмента для борьбы
[Сделать это ясно, чтобы сказать это!  Linux] важный инструмент для сотрудников (два) - AWK обработки текстов инструмента для борьбы


(十三)求和
(13.1)在我们的内存中正常是会将内存的数据写入到硬盘中的,因此内存的数据和硬盘的数据是同步的,我们称之为干净数据,但是有时候在我们的内存中有些数据修改完后并没有写入到硬盘中去,内存中的数据和硬盘数据并不同步,此时这类数据我们称之为脏数据,如果脏数据没有及时写入到硬盘,那么当计算机重启之后没有写入到硬盘的数据就会丢失了。现在我们的需求是计算出某个进程一共有多少个干净页,有多少个脏页,我们是可以从/proc/1/smaps的系统映射文件中查看到我们所需的内存相关信息的,我们可以使用模式匹配的方式,将干净页和脏页分别进行统计,在之前的基础上进行连加操作。
# cat /proc/1/smaps
# cat /proc/1/smaps | awk '/Shared_Clean/{AA+=$2}/Shared_Dirty/{BB+=$2}END{print "干净页总合是"AA"KB";print "脏页的总合是"BB"KB"}'
[Сделать это ясно, чтобы сказать это!  Linux] важный инструмент для сотрудников (два) - AWK обработки текстов инструмента для борьбы
[Сделать это ясно, чтобы сказать это!  Linux] важный инструмент для сотрудников (два) - AWK обработки текстов инструмента для борьбы
(13.2)现在我们有两个文件a1和a2,因为我们发现a1文件和a2文件的列数是一样的,所以现在我们的需求是希望将a1文件和a2文件中对应的列数进行相加得到一个相加后的一行数组。解决这个问题的思路我们是把一个文件里所有的数字放在一个数组里保存,然后读取第二个文件,把第二个文件里所有的数组保存,然后分别相加(图13-5)。当然我们也可以使用getline函数解决问题,首先使用for循环获取a1文件的所有值,然后使用getline读取a2文件读取的行替换到当前所在行的信息,最后使用for循环去遍历数组a与当前a2文件中的每个字段,并进行相加的操作,此时也可以得到我们所需的结果(图)。
# AWK «NR == FNR {для (я = 1, я <= NF; я ++) {а [я] = $ I}} NR = FNR {для! (Я = 1, я <= NF; я ++) { б [я] = $ I; Printf "% s", а [я] + Ь [I]}} END {Printf "\ п"} 'а1 а2
# AWK' {для (I = 1; я <= NF ; я ++) {а [I] = $ I}; GetLine < "а2", ибо (я = 1; я <= NF; я ++) {Printf "% s", а [я] + $ я} Printf «\ п "}» a1
[Сделать это ясно, чтобы сказать это!  Linux] важный инструмент для сотрудников (два) - AWK обработки текстов инструмента для борьбы
[Сделать это ясно, чтобы сказать это!  Linux] важный инструмент для сотрудников (два) - AWK обработки текстов инструмента для борьбы
[Сделать это ясно, чтобы сказать это!  Linux] важный инструмент для сотрудников (два) - AWK обработки текстов инструмента для борьбы
[Сделать это ясно, чтобы сказать это!  Linux] важный инструмент для сотрудников (два) - AWK обработки текстов инструмента для борьбы


(ХIV) реальный случай
(14,1) достигли карты IP
# Ifconfig | Grep 'инет' | Grep Broadcast | AWK '{Печать $ 2}'
[Сделать это ясно, чтобы сказать это!  Linux] важный инструмент для сотрудников (два) - AWK обработки текстов инструмента для борьбы
(14.2) сделано на системной памяти размер
# кошке / Proc / MemInfo | AWK «/ MemTotal / Печать $} 2 { '
[Сделать это ясно, чтобы сказать это!  Linux] важный инструмент для сотрудников (два) - AWK обработки текстов инструмента для борьбы
(14,3) изменить порядок полей в файле CSV, data.csv мы создаем файл в системе хочет второе поле и четвертое поле для обмена.
# Кошка data.csv | AWK -F, ' BEGIN {ФСУ = ""} {печать $ 1, $ 4, $ 3, $ 2, $ 5, $ 6, $ 7}'
[Сделать это ясно, чтобы сказать это!  Linux] важный инструмент для сотрудников (два) - AWK обработки текстов инструмента для борьбы
[Сделать это ясно, чтобы сказать это!  Linux] важный инструмент для сотрудников (два) - AWK обработки текстов инструмента для борьбы
[Сделать это ясно, чтобы сказать это!  Linux] важный инструмент для сотрудников (два) - AWK обработки текстов инструмента для борьбы

------ Это завершает статью, спасибо за чтение ------

рекомендация

отblog.51cto.com/13613726/2460753