Questions tagged «awk»

一种模式导向的扫描和处理语言。

2
grep:显示一次文件名,然后显示带有行号的上下文
我们的源代码中遍布错误代码。使用grep可以很容易地找到它们,但是我想要一个find_code可以执行的bash函数(例如find_code ####),它将提供以下内容的输出: /home/user/path/to/source.c 85 imagine this is code 86 this is more code 87 { 88 nicely indented 89 errorCode = 1111 90 that's the line that matched! 91 ok this block is ending 92 } 93 } 这是我目前拥有的: find_code() { # "= " included to avoid matching unrelated number …

1
使用rsync输出的“对话框”制作进度条
我正在寻找一种过滤/重定向rsync输出的方式,可以将其输入到“ dialog --gauge”命令中,以便在文件同步过程中获得一个漂亮的进度条。目前,我仅在提示符下直接对其进行了测试,但我计划在(bash)shell脚本中进行此操作。 我环顾了互联网,发现了点点滴滴,但我仍然缺少使它正常工作的东西 (免责声明:这可能是完全错误的方法,并且是重定向/管道怪诞) 我目前汇总的内容: rsync -avz --progress -e "ssh" user@server:/home/user/data/ /home/user/data | awk -f /home/user/rsync.awk | sed 's/\([0-9]*\).*/\1/' | dialog --title "My Gauge" --gauge "Hi, this is a gauge widget" 20 70 首先,我有一个带有--progress选项的实际rsync命令。rsync的输出通过管道传递到awk中,并使用以下awk过滤器: { if (index($0, "to-check=") > 0) { split($0, pieces, "to-check=") split(pieces[2], term, ")"); split(term[1], division, …
16 linux  bash  scripting  awk  rsync 

2
如何在AWK中使用正则表达式作为字段分隔符?
我正在尝试使用regex作为中的字段分隔符awk。从我的阅读看来,这似乎是可行的,但我无法正确理解语法。 rpm -qa | awk '{ 'FS == [0-9]' ; print $1 }' awk: cmd. line:1: { FS awk: cmd. line:1: ^ unexpected newline or end of string 有什么想法吗?目的(如果不是很明显)是获得没有版本号的软件列表。

5
查找文件中任何位置包含多个关键字的文件
我正在寻找一种列出目录中所有文件的方法,该文件包含我要查找的关键字的完整集合,位于文件的任何位置。 因此,关键字不必出现在同一行上。 一种方法是: grep -l one $(grep -l two $(grep -l three *)) 三个关键字只是一个例子,也可以是两个或四个,依此类推。 我能想到的第二种方法是: grep -l one * | xargs grep -l two | xargs grep -l three 在另一个问题中出现的第三个方法是: find . -type f \ -exec grep -q one {} \; -a \ -exec grep -q two {} \; -a …


8
如何在bash中测试数组元素是否全部相等?
以下数组表示每台Linux机器上的磁盘数 每个单个阵列都包括linux计算机上的磁盘数。 echo ${ARRAY_DISK_Quantity[*]} 4 4 4 4 2 4 4 4 识别所有数组值相等的简单方法是什么? 良好状态: 4 4 4 4 4 4 4 4 不良状态: 4 4 4 4 4 4 2 4 不良状态: 6 6 6 6 6 6 6 6 6 6 2 6 2
15 bash  shell-script  awk  array 

12
文件行到列的转换
假设我有一个文件: 文件1: PAPER TEAM MANISH NISHA GARIMA JYOUTI ........etc 我想要的File2: PAPER TEAM MANISH NISHA GARIMA JYOUTI 行到列的转换File1。

5
如何将列中的时间戳转换为日期?
我有一个包含此文件: 1415602803,LOGIN SUCCESS,AUTH,user2,192.168.203.63,10.146.124.73,59996,22 1415602807,LOGIN SUCCESS,AUTH,user1,172.24.31.10,172.32.1.1,48191,22 1415602811,LOGIN FAILED,AUTH,root,172.24.166.153,10.146.124.73,52506,22 1415602815,LOGIN FAILED,AUTH,user3,192.168.123.55,10.146.32.99,55750,22 我想将时间戳转换为以下格式的日期: 2014-11-10 02:00:03,LOGIN SUCCESS,AUTH,user2,192.168.203.63,10.146.124.73,59996,22 2014-11-10 02:00:07,LOGIN SUCCESS,AUTH,user1,172.24.31.10,172.32.1.1,48191,22 2014-11-10 02:00:11,LOGIN FAILED,AUTH,root,172.24.166.153,10.146.124.73,52506,22 2014-11-10 02:00:15,LOGIN FAILED,AUTH,user3,192.168.123.55,10.146.32.99,55750,22 我怎样才能做到这一点? 我知道这可行:(perl -pe 's/(\d+)/localtime($1)/e'从这个问题开始),但是输出格式是Mon Nov 10 02:00:03 2014。 我知道此命令可以将时间戳转换为所需的输出:date -d@1415602803 +"%F %H:%M:%S",但是由于所有引号和其他原因,我无法使其与一起awk使用system("cmd")。

8
如何执行多行grep
您将如何对出现在两行上的文本执行grep? 例如: pbsnodes 是我使用的命令,该命令返回Linux集群的利用率 root$ pbsnodes node1 state = free procs = 2 bar = foobar node2 state = free procs = 4 bar = foobar node3 state = busy procs = 8 bar = foobar 我想确定与处于“ free”状态的节点匹配的proc的数量。到目前为止,我已经能够确定“进程数”和“处于空闲状态的节点”,但是我想将它们组合成一个显示所有空闲进程的命令。 在上面的示例中,正确答案将是6(2 + 4)。 我有的 root$ NUMBEROFNODES=`pbsnodes|grep 'state = free'|wc -l` root$ echo …


5
用定界符三重管道符号“ |||”逐行合并两个文件
我有两个并行文件,两种语言的行数相同,并计划使用定界符逐行合并这两个文件|||。例如,两个文件如下: 档案A: 1Mo 1,1 I love you. 1Mo 1,2 I like you. Hi 1,3 I am hungry. Hi 1,4 I am foolish. 档案B: 1Mo 1,1 Ich liebe dich. 1Mo 1,2 Ich mag dich. Hi 1,3 Ich habe Durst. Hi 1,4 Ich bin neu. 预期的输出是这样的: 1Mo 1,1 I love you. ||| …

2
删除大单词列表中重复项的最快方法?
我需要对大型单词表进行重复数据删除。我尝试了几个命令,并在此处和此处进行了一些研究,他们解释说,最快的重复数据删除单词列表的方法似乎是使用awk。 awk-> O(n)吗?排序-> O(n log n)? 但是我发现这似乎是不正确的。这是我的测试结果: sort -u input.txt -o output.txt 真实的0m12.446s 用户0m11.347s sys 0m0.906s awk '!x[$0]++' input.txt > output.txt 真实的0m47.221s 用户0m45.419s sys 0m1.260s 因此,使用sort -u快3.7倍。为什么是这样?有没有更快的方法来进行重复数据删除? ***********更新******** 正如有人在评论中指出的那样,可能是我的词表已在某种程度上被排序。为了排除这种可能性,我使用此python脚本生成了两个单词表。 列表1 = 7 Mb 列表2 = 690 Mb 结果AWK: List1 实数0m1.643s 用户0m1.565s sys 0m0.062s List2 实际2m6.918s 用户2m4.499s sys 0m1.345s 结果排序: List1 …
14 bash  awk  performance  sort 


5
如何使用awk取绝对值?
如果我有以下两个日期: 2015-09-12,2015-08-13 我需要获取它们之间的天数,我将使用以下代码: awk -F'[-,]' '{print 360*($4-$1)+30*($5-$2)+($6-$3)}' 这段代码的输出-29实际上是29

5
删除重复的行,同时保持行的顺序
[root@server]# awk '!seen[$0]++' out.txt > cleaned awk: (FILENAME=out.txt FNR=8547098) fatal error: internal error Aborted [root@server]# ““服务器””具有:8 GB RAM + 16 GB SWAP,x> 300 GB可用空间,amd64,台式机CPU。科学Linux 6.6。没有其他东西可以使它加载。Awk在几秒钟后中止。out.txt为〜1.6 GB。GNU Awk 3.1.7。 问题:如何在保持行顺序的同时删除重复的行?大小写也很重要,例如:“ A”和“ a”是两个不同的行,必须保留它。但是“ a”和“ a”是重复的,只需要第一个。 答案可能在任何情况下..如果awk对此不利。.那么perl / sed ..可能是什么问题? [root@server]# ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.