Questions tagged «awk»

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

5
用sed替换大小写匹配模式
我的源代码分布在多个文件中。 它具有abcdef我需要替换为的模式pqrstuvxyz。 模式可以是Abcdef(句子大小写),然后需要将其替换Pqrstuvxyz。 模式可以是AbCdEf(切换大小写),然后需要用替换PqRsTuVxYz。 简而言之,我需要匹配源模式的大小写并应用适当的目标模式。 如何使用sed或其他任何工具来实现此目的?

2
快速测试所有键盘按键的脚本
我需要检查一些笔记本电脑的键盘按键,以便尽快提高速度。 对于该特定任务,我什么都没找到,所以我的想法是一个脚本,该脚本可以读取已按下的键并知道所有键盘键,因此我可以快速对其进行重击并报告尚未按下的键。我想我可以使用showkeyor或xevgrepping输出来实现: xev | grep keysym 样本输出: state 0x10, keycode 46 (keysym 0x6c, l), same_screen YES, state 0x10, keycode 33 (keysym 0x70, p), same_screen YES, state 0x11, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES, state 0x10, keycode 51 (keysym 0x5d, bracketright), same_screen YES, state 0x10, keycode 36 (keysym 0xff0d, Return), …
14 bash  grep  awk  keyboard  stdout 

7
如何减少AWK中正则表达式的贪婪性?
我想在中进行非贪心模式(正则表达式)匹配awk。这是一个例子: echo "@article{gjn, Author = {Grzegorz J. Nalepa}, " | awk '{ sub(/@.*,/,""); print }' 是否可以编写选择较短字符串的正则表达式? @article{gjn, 而不是这个长字符串?: @article{gjn, Author = {Grzegorz J. Nalepa}, 我想得到这个结果: Author = {Grzegorz J. Nalepa}, 我有另一个例子: echo“ ,文章{gjn,作者= {Grzegorz J. Nalepa},” | awk'{sub(/ , [^,] *,/,“”); 打印}' ↑↑^^^^^^ 请注意,我在输入字符串和正则表达式的第一个位置将@字符更改为逗号(,)字符(并且也更改.*为[^,]*)。是否可以编写选择较短字符串的正则表达式? , Author = {Grzegorz J. Nalepa}, …


4
将每行的一部分输出到单独的文件中
我有一个像这样的文件: a AGTACTTCCAGGAACGGTGCACTCTCC b ATGGATTTTTGGAGCAGGGAGATGGAATAGGAGCATGCTCCAT c ATATTAAATGGATTTTTGGAGCAGGGAGATGGAATAGGAGCATGCTCCATCCACTCCACAC d ATCAGTTTAATATCTGATACGTCCTCTATCCGAGGACAATATATTAAATGGA e TTTGGCTAAGATCAAGTGTAGTATCTGTTCTTATAAGTTTAATATCTGATATGTCCTCTATCTGA 我想制作a.seq包含sequence的文件AGTACTTCCAGGAACGGTGCACTCTCC。同样b.seq包含ATGGATTTTTGGAGCAGGGAGATGGAATAGGAGCATGCTCCAT。简而言之,应将Column1用作扩展名的输出文件名,.seq然后在其中具有相应的column2序列。我可以通过编写一个Perl脚本来做到这一点,但是命令行上的任何操作都会有所帮助。希望尽快听到。

7
如何从文件中删除多个空白行?
我有一些用于记笔记的文本文件-纯文本,通常仅使用cat >> file。有时我使用一两行空白(仅返回-换行符)来指定新的主题/思路。在每个会话结束时,在用Ctrl+ 关闭文件之前D,我通常添加很多(5-10)空行(返回键)以分隔会话。 这显然不是很聪明,但是它对我有用。我做不过最终了很多很多不必要的空行,所以我在寻找一种方式来删除(大部分)的额外线。是否有Linux命令(剪切,粘贴,grep,...?)可以直接与几个选项一起使用?或者,是否有人对sed,awk或perl(可以在任何脚本语言中使用,尽管我更喜欢sed或awk)的脚本都能满足我的需求?用C ++编写某些东西(我实际上可以自己做),似乎有点过头了。 情况1:我需要的是一个脚本/命令,该脚本/命令将删除多于两个(3个或更多)连续的空行,并将其替换为仅两个空行。尽管也可以对其进行调整以删除多于一行(两行或更多)和/或仅用一个空白行替换多个空白行,这是很好的。 情况2:我还可以使用脚本/命令来删除两行文本之间的单个空白行,但照原样保留多个空白行(尽管删除其中一个空白行也是可以接受的)。
14 scripting  sed  awk  perl  filter 


1
Solaris 11上的POSIX Awk?
这或多或少是以下两个问题的跟进问题: 通过awk'!x [$ 0] ++'文件删除重复行的语法错误 SunOs和Linux上的awk / nawk替代 我看到在Solaris 10(SunOS 5.10)上,我得到以下结果: $ type -a awk awk is /usr/bin/awk $ PATH="$(getconf PATH)" type -a awk awk is /usr/xpg4/bin/awk awk is /usr/bin/awk $ 在Solaris 10上,/usr/bin/awk不接受POSIX标准awk中语法如'!x[$0]++',但/usr/xpg4/bin/awk确实。到目前为止足够好了。 但是,在Solaris 11上,/usr/bin/awk甚至只有getconf PATH。虽然也有nawk和oawk是/usr/bin,这些显然都没有指出,一些从任何地方符号链接。 知道Solaris已获得POSIX认证,这使我感到惊讶。 如何使用可移植代码在Solaris 11上标准地获得与POSIX兼容的Awk,这些代码也可以在其他与POSIX兼容的系统上工作?(或者是检查nawkor 是否存在oawk并使用其中一个(如果存在)的唯一选择?) 因此,什么是 nawk和oawk?
13 awk  solaris  posix 


3
如何在sed或awk流中添加页眉和/或页脚?
我有一堆输出通过sed和awk。 如何在输出前加上START前缀并在END后加上答案? 例如,如果我有 All this code on all these lines and all these 我如何获得: START All this code on all these lines and all these END ? 我的尝试是: awk '{print "START";print;print "END"}' 但是我得到了 ... START All this code END START on all these lines END START and all these END

5
如何在mawk中打​​印自己的脚本名称?
在bash中$0包含脚本的名称,但是在awk中,如果我使用以下内容创建名为myscript.awk的脚本: #!/usr/bin/awk -f BEGIN{ print ARGV[0] } 并运行它,它只会打印“ awk”。此外,i> 0的ARGV [i]仅用于命令行中的脚本参数。那么,如何使其打印脚本名称,在本例中为“ myscript.awk”?
13 awk  scripting  mawk 

9
如何删除文件中每行的第5个字?
我想删除文件中每行的第5个字。 文件的当前内容: File is not updated or and will be removed System will shut down f within 10 seconds Please save your work 55 or copy to other location Kindly cooperate with us D 预期产量: File is not updated and will be removed System will shut down within 10 seconds …

9
命令行工具可以“ cat”成对扩展文件中的所有行
假设我有一个看起来像这样的文件(称为sample.txt): Row1,10 Row2,20 Row3,30 Row4,40 我希望能够处理此文件中的流,该流本质上是所有四行的成对组合(因此我们应该最终得到总共16行)。例如,我正在寻找流式(即有效)命令,其输出为: Row1,10 Row1,10 Row1,10 Row2,20 Row1,10 Row3,30 Row1,10 Row4,40 Row2,20 Row1,10 Row1,20 Row2,20 ... Row4,40 Row4,40 我的用例是我想将此输出流式传输到另一个命令(如awk),以计算有关此成对组合的一些度量。 我有一种方法可以在awk中执行此操作,但是我担心的是,我对END {}块的使用意味着我基本上将整个文件存储在内存中,然后再输出。示例代码: awk '{arr[$1]=$1} END{for (a in arr){ for (a2 in arr) { print arr[a] " " arr[a2]}}}' samples/rows.txt Row3,30 Row3,30 Row3,30 Row4,40 Row3,30 Row1,10 Row3,30 Row2,20 Row4,40 …

4
如何在保持空行的同时用awk删除重复的行?
下面的awk命令删除所有重复的行,如下所示: awk '!seen[$0]++' 如果文本包含空行,则将删除除一个空行以外的所有行。 如何仅使用保留所有空行,同时删除所有非空重复行awk?请也提供简短的说明。
13 awk 

4
如何在AWK中使用正则表达式进行字符串替换?
假设文件中有一些文本: (bookmarks ("Chapter 1 Introduction 1" "#1" ("1.1 Problem Statement and Basic Definitions 23" "#2") ("Exercises 31" "#30") ("Notes and References 42" "#34")) ) 我想给每个数字加11,"如果有的话,则在每行中加一个,即 (bookmarks ("Chapter 1 Introduction 12" "#12" ("1.1 Problem Statement and Basic Definitions 34" "#13") ("Exercises 42" "#41") ("Notes and References 53" "#45")) ) 这是我使用GNU AWK和regex的解决方案: …

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.