Questions tagged «awk»

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

1
何时使用grep,更少,awk,sed [关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 3年前关闭。 我正在进入Linux的世界,在工作中,我使用的grep越来越多。通过这样做,我发现有时候这不足以满足我的需求。 grep几天前,我在苦苦挣扎,我的一位资深Linux管理员同事告诉我使用awk。我以如此快的速度震惊了我。 所以我的问题是,您什么时候选择一个使用另一个?grep如果可以awk节省时间,在上班并花费大量时间之前,我可以问自己什么问题?
17 awk  sed  grep  less 


3
在制表符分隔的文件中添加值列
如何在具有一定行数的文件中添加一列值。我有一个像这样的输入文件: 输入文件: SPATA17 1 217947738 LYPLAL1 1 219383905 FAM47E 4 77192838 SHROOM3 4 77660162 SHROOM3 4 77660731 SHROOM3 4 77662248 输出文件: SPATA17 1 217947738 file1 LYPLAL1 1 219383905 file1 FAM47E 4 77192838 file1 SHROOM3 4 77660162 file1 SHROOM3 4 77660731 file1 SHROOM3 4 77662248 file1 在这种情况下,我想添加一列值,直到文件中的行数。该值保持一致,例如“ file1”。 原因是我有100个这些文件,我不想打开每个文件并粘贴一列。也可以通过进入目录并添加一列值来实现此目的的自动化。该值来自文件名,该文件名必须添加到文件的最后/第一列的每一行中。

1
删除字段值小于或等于3的行-sed或awk?
我需要删除第8个字段(列)中值等于或小于2的每一行。 我的数据如下所示: 12-31 Airport 189 379 41 49.70946503 -124.91377258 2 2880 30.8 01-01 AlberniElementary 165 331 16 49.26100922 -124.80662537 4 5760 26.1 01-09 BamfieldMarine 161 323 23 48.83490372 -125.13572693 2 2875 27.4 01-10 BamfieldMarine 161 323 23 48.83490372 -125.13572693 3 3068 38.6 我知道使用awk可以剥离所需的值并将它们打印到另一个文件,并且我知道sed可以编辑当前文件。无论哪种情况,我都需要保留原始文件。 注意:请提供您的解决方案的详尽说明。仅编写命令是不够的,请注释建议。 进一步说明:数据具有标题行,因此最可能的解决方案将需要 awk'FNR> 1' 我想?
17 shell  shell-script  sed  awk  grep 

7
每行重复多次
希望文件中的每一行重复固定的次数。 例如,每行重复四次: a b c 变成: a a a a b b b b c c c c 我已经进行了一些搜索,沿着反向进行的过程中有很多问题和答案,例如,将重复的行合并为单行,也许还有一些关于通过再次打印将行加倍的问题。 在C语言中这样做很容易,但是我希望我对本机命令有更多的了解,因此我不必一直使用这种一次性的方法。

3
如何在bash中使用正好2个有效数字格式化浮点数?
我想在bash中用正好两个有效数字打印浮点数(也许使用awk,bc,dc,perl等通用工具)。 例子: 76543应打印为76000 0.0076543应打印为0.0076 在这两种情况下,有效数字分别为7和6。对于类似的问题,我已经阅读了一些答案,例如: 如何在shell中四舍五入浮点数? 浮点变量的Bash限制精度 但是答案集中在限制小数位数(例如bc带scale=2或的printf命令%.2f)上,而不是有效位数上。 有没有一种简单的方法可以用2个有效数字来格式化数字,或者我必须编写自己的函数?
17 bash  awk  bc  floating-point  dc 

5
使用grep vs awk
捕获特定图案,awk并且grep可以使用。为什么我们要使用一个?哪个更快,为什么? 如果我有一个日志文件并且想要获取某种模式,则可以执行以下操作之一 awk '/pattern/' /var/log/messages 要么 grep 'pattern' /var/log/messages 我还没有做过任何基准测试,所以我不知道。有人可以详细说明吗?很高兴知道这两个工具的内部工作原理。
17 linux  awk  grep  performance 

3
替换文件中的多行字符串
我有许多文件想要通过用另一个多行字符串替换一个多行字符串来更新。类似于以下内容: * Some text, * something else * another thing 我想替换为: * This is completely * different text 结果将是,替换后包含第一个文本块的文件现在将包含第二个字符串(文件的其余部分保持不变)。 问题的一部分是,我必须在文件系统中找到要更新的文件列表。我想我可以为此使用grep(尽管再次使用多行字符串不是那么容易),然后将其通过sed传送吗? 是否有捷径可寻?sed是一个选项,但是很尴尬,因为我必须添加\ n等。是否有办法说“从此文件中获取输入,在这些文件中进行匹配,然后用另一个文件的内容替换”?我可以在需要时使用python,但是我想要快速简单的方法,因此,如果有可用的实用程序,我宁愿使用它而不是编写自己的脚本(我知道该怎么做)。

3
计算文件中字段的不同值
我的文件包含大约一百万行。在各行中,我有一个名为的字段transactionid,该字段具有重复值。我需要做的是分别计算它们。 无论一个值重复多少次,都应该只计数一次。

1
在AWK中使用Slurp模式?
诸如之类的工具sed,awk或一次perl -n处理其输入一个记录,默认情况下,记录为行。 某些诸如awkwith RS,GNU sedwith -z或perlwith -0ooo可以通过选择其他记录分隔符来更改记录的类型。 perl -n可以使整个输入(通过多个文件传递时每个文件)成为带有选项的单个记录-0777(或-0后跟任何大于0377的八进制数,即777为规范值)。这就是他们所说的“ 灌浆模式”。 可类似这样完成awk的RS或任何其他机制?在哪里按顺序awk处理每个文件内容,而不是按顺序处理每个文件的每一行?
16 awk 



5
提取双引号之间的值
我的查询是提取双引号之间的值""。样本输入为: 10.219.41.68---[11 / Jun / 2014:10:23:04 -0400] Sec:0 MicSec:1797“ GET / balancer-manager HTTP / 1.1” 200 28980“-”“ curl / 7.15.5(i386 -redhat-linux-gnu)libcurl / 7.15.5 OpenSSL / 0.9.8b zlib / 1.2.3 libidn / 0.6.5“ 我的日志文件很大,因此每行的值可能会有所不同,因此需要在首次出现双引号之间提取值。 预期产量: GET /balancer-manager HTTP/1.1 任何人有任何想法,然后建议。
16 awk 

2
在(包括)两个模式之间打印行
我想从行CK末的行开始grepping,而当行末的行停止grepping D。我尝试过grep "$CK" "$D" file..txt,但是没有用。 输入: kkkkkkkkkkk jjjjjjjjjjjjjjjjjj gggggggggggg/CK JHGHHHHHHHH HJKHKKLKLLL JNBHBHJKJJLKKL JLKKKLLKJLKJ/D GGGGGGGGGGGGGG GGGGGGGGGGGGGG 所需的输出: gggggggggggg/CK JHGHHHHHHHH HJKHKKLKLLL JNBHBHJKJJLKKL JLKKKLLKJLKJ/D

3
根据文件的第5列值过滤.CSV文件,并将这些记录打印到新文件中
我有一个.CSV文件,格式如下: "column 1","column 2","column 3","column 4","column 5","column 6","column 7","column 8","column 9","column 10 "12310","42324564756","a simple string with a , comma","string with or, without commas","string 1","USD","12","70%","08/01/2013","" "23455","12312255564","string, with, multiple, commas","string with or, without commas","string 2","USD","433","70%","07/15/2013","" "23525","74535243123","string , with commas, and - hypens and: semicolans","string with or, without commas","string 1","CAND","744","70%","05/06/2013","" "46476","15467534544","lengthy string, with …
16 linux  sed  awk  csv  filter 

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.