awk -vFS='"' '{for(i=1;i<=NF;i++){if($i=="SHANAME")printf("\"%s\",", $(i+2))}}END{print ""}' filetest20.txt
时间: 2023-09-28 22:06:36 浏览: 74
这个awk命令的含义是在一个名为"filetest20.txt"的文件中,查找包含"SHANAME"的字段,并打印出该字段后面的值。
让我们逐步解释这个awk命令的各个部分:
1. `-vFS='"'`:设置字段分隔符为双引号。这将帮助我们将每个字段分隔开。
2. `'...'`:这是awk命令的主体部分,由单引号括起来。
3. `for(i=1;i<=NF;i++)`:这是一个循环,从第一个字段(i=1)开始,一直到最后一个字段(NF表示总字段数)。
4. `if($i=="SHANAME")`:如果当前字段的值等于"SHANAME",则执行下面的语句。
5. `printf("\"%s\",", $(i+2))`:打印当前字段后面第二个字段的值,并以双引号括起来。这里使用`$(i+2)`表示当前字段的下一个字段。
6. `END{print ""}`:在处理完所有行后,打印一个空行,用于结束输出。
总结来说,这个awk命令会遍历文件的每一行,查找包含"SHANAME"的字段,并打印出该字段后面的值。多个匹配的值会以逗号分隔,并用双引号括起来。
请确保你已经将实际的文件名替换为"filetest20.txt",并将其放在当前工作目录下。如果文件存在,并且包含符合条件的字段和值,那么运行这个awk命令会输出相应的结果。
如果还有其他问题,请随时提问。
相关问题
awk -F"[{}:,]+" '{for(i=1;i<=NF;i++){if($i=="\"SHANAME\""){a=a?a","$(i+1):$(i+1)}}}END{print a}' filetest20.txt
这个awk命令的含义是在一个名为"filetest20.txt"的文件中,查找包含"SHANAME"的字段,并将其后面的值提取出来。
让我们逐步解释这个awk命令的各个部分:
1. `-F"[{}:,]+"`:设置字段分隔符为多个字符,包括 `{}`、`,`、`:` 和 `+`。这将帮助我们将每个字段分隔开。
2. `'...'`:这是awk命令的主体部分,由单引号括起来。
3. `for(i=1;i<=NF;i++)`:这是一个循环,从第一个字段(i=1)开始,一直到最后一个字段(NF表示总字段数)。
4. `if($i=="\"SHANAME\"")`:如果当前字段的值等于"SHANAME"(带有双引号),则执行下面的语句。
5. `a=a?a","$(i+1):$(i+1)`:将当前字段后面的值提取出来,并将其存储在变量a中。如果a已经有值,则在新值之前加上逗号。这样可以将多个匹配的值以逗号分隔起来。
6. `END{print a}`:在处理完所有行后,打印变量a的值。它将包含所有匹配的值,以逗号分隔。
总结来说,这个awk命令会遍历文件的每一行,查找包含"SHANAME"的字段,并将其后面的值提取出来。多个匹配的值会以逗号分隔,并打印出来。
请确保你已经将实际的文件名替换为"filetest20.txt",并将其放在当前工作目录下。如果文件存在,并且包含符合条件的字段和值,那么运行这个awk命令会输出相应的结果。
如果还有其他问题,请随时提问。
`ps -ef | egrep 'mods.*[0-9].log' | grep -v grep | awk '{for(i=1;i<=NF;i++){if($i~".log$") print $i}}' | awk -F/ '{print $NF}' | sort -n`
`ps -ef | egrep 'mods.*[0-9].log' | grep -v grep | awk '{for(i=1;i<=NF;i++){if($i~".log$") print $i}}' | awk -F/ '{print $NF}' | sort -n` 命令是用来从进程列表中查找包含"mods"且以数字结尾的日志文件,并按照文件名进行排序。
首先,`ps -ef`命令用于列出所有进程的详细信息。然后,通过使用`egrep 'mods.*[0-9].log'`筛选出包含"mods"且以数字结尾的日志文件的进程。接着,通过`grep -v grep`过滤掉含有"grep"的行。然后,使用awk命令`'{for(i=1;i<=NF;i++){if($i~".log$") print $i}}'`,在每一行中查找以".log"结尾的单词并打印出来。接下来,使用`awk -F/ '{print $NF}'`命令,将每个日志文件的路径去除,只保留文件名。最后,使用`sort -n`对文件名进行数字排序。
阅读全文