Tag: awk

使用awk与variables

x=3 A=`echo $A|awk '{print $x}'` echo $A 不打印3.我如何使用awk的variables*

如何使用AWK合并两个文件?

文件1有5个字段ABCDE,字段A是一个整数值 文件2有3个字段AFG 文件1中的行数比文件2(20 ^ 6至5000)大很多, 文件1中A的所有条目出现在文件2中的字段A中 我喜欢把字段A中的两个文件合并,并携带F和G. 期望的输出是ABCDEFG 例 文件1 ABCDE 4050 S00001 31228 3286 0 4050 S00012 31227 4251 0 4049 S00001 28342 3021 1 4048 S00001 46578 4210 0 4048 S00113 31221 4250 0 4047 S00122 31225 4249 0 4046 S00344 31322 4000 1 文件2 AFG 4050 12.1 23.6 4049 14.4 47.8 4048 […]

只打印前三列

太麻烦了: awk '{print " "$4" "$5" "$6" "$7" "$8" "$9" "$10" "$11" "$12" "$13}' things

我怎样才能删除Unix中的文件中的重复行?

有没有办法在Unix中删除文件中的重复行? 我可以用sort -u和uniq命令来完成。 但我想用sed或awk 。 那可能吗?

使用awk高效parsingCSV的最健壮的方法是什么?

这个问题的意图是提供一个规范的答案。 给定一个CSV可能由Excel或其他embedded换行符的工具生成,embedded的双引号和空字段,如: $ cat file.csv "rec1, fld1",,"rec1"",""fld3.1 "", fld3.2","rec1 fld4" "rec2, fld1.1 fld1.2","rec2 fld2.1""fld2.2""fld2.3","",rec2 fld4 使用awk来确定单独的logging和字段,最有效的方法是什么? Record 1: $1=<rec1, fld1> $2=<> $3=<rec1","fld3.1 ", fld3.2> $4=<rec1 fld4> —- Record 2: $1=<rec2, fld1.1 fld1.2> $2=<rec2 fld2.1"fld2.2"fld2.3> $3=<> $4=<rec2 fld4> —- 所以它可以作为awk脚本的其他部分在内部使用这些logging和字段。 一个有效的CSV将是一个符合RFC 4180或可以由MS-Excel生成的。 该解决scheme必须容许logging的结尾只是LF( \n ),而不像UNIX标准所要求的和CRLF( \r\n )那样需要使用Excel或其他Windows工具才能生成的UNIX文件。 它也将容忍与引用字段混合的未加引号的字段。 它会特别的不需要容忍转义与前面的反斜杠(即\"而不是"" ),因为一些其他CSV格式允许 – 如果你有,然后添加一个gsub(/\\"/,"\"\"")前端将处理它,并试图在一个脚本中自动处理这两个转义机制将使脚本不必要的脆弱和复杂。

Bash工具从文件中获得第n行

有没有一个“规范”的方式呢? 我一直在使用head -n | tail -1 head -n | tail -1这个技巧,但我一直想知道是否有一个Bash工具,专门从文件中提取一行(或一系列的行)。 “规范”是指一个主要function就是这样的程序。

如何从命令行将每两行合并成一行?

我有一个以下格式的文本文件。 第一行是“KEY”,第二行是“VALUE”。 KEY 4048:1736 string 3 KEY 0:1772 string 1 KEY 4192:1349 string 1 KEY 7329:2407 string 2 KEY 0:1774 string 1 我需要和键一样的值。 所以输出应该是这样的… KEY 4048:1736 string 3 KEY 0:1772 string 1 KEY 4192:1349 string 1 KEY 7329:2407 string 2 KEY 0:1774 string 1 如果我可以使用一些分隔符如$或KEY 4048:1736string3,会更好 如何将两行合并成一行?

使用awk删除字节顺序标记

awk脚本(大概是单行)如何去除BOM ? 规范: 打印每行之后( NR > 1 ) 对于第一行:如果以#FE #FF或#FF #FE ,则删除它们并打印剩下的部分

根据date范围筛选日志文件条目

我的服务器CPU使用率exception高,而且我可以看到Apache使用太多的内存。 我有一种感觉,我被一个单一的知识产权所困扰 – 也许你能帮我find他吗? 我使用了下面这行,find了10个最“活跃”的IP: cat access.log | awk '{print $1}' |sort |uniq -c |sort -n |tail 前5个IP的服务器请求量是“平均”用户的200倍。 但是,我不能确定这5位访客是否非常频繁,或者他们正在攻击服务器。 有没有办法,指定上述search到一个时间间隔,例如。 最近两个小时或10-12今天? 干杯! 更新2011年10月23日 – 我需要的命令: 获取最近X小时内的条目[这里两个小时] awk -vDate=`date -d'now-2 hours' +[%d/%b/%Y:%H:%M:%S` ' { if ($4 > Date) print Date FS $4}' access.log 在最近的X小时内获得最活跃的IP [在这里两个小时] awk -vDate=`date -d'now-2 hours' +[%d/%b/%Y:%H:%M:%S` ' { if ($4 > Date) […]

awk / sed:如何做一个string的recursion查找/replace?

如何查找和replace以下每个事件: subdomainA.example.com 同 subdomainB.example.com 在/home/www/目录树(recursion查找/replace)下的每个文本文件中。