Questions tagged «awk»

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




3
差异,仅显示正确文件中的修改行
我有文件a,b并且我想输出b自从克隆以来更改的行a。仅修改的行,没有周围的上下文,没有diff偏移标记。 如何使用Shell脚本来做到这一点?(没有Python / Perl / PHP / ...) Sed和awk是可接受的解决方案。 现在,我正在使用--suppress-common-lines diff -y并使用正则表达式反向引用sed来仅在空白之后获取正确的部分。肯定有更好的办法? 使用perl(这是被禁止的),我会做这样的事情: diff -y --suppress-common-lines -W $COLUMNS Eclipse_Preferences_Export_*.epf | perl -pe 's/.*\t|\t(.*)$/\1/g'
24 shell-script  sed  awk  diff 

7
在AWK中使用bash shell函数
是否可以以某种方式在AWK中使用bash函数? 示例文件(字符串,整数,整数,整数) Mike 247808 247809 247810 尝试将值从十进制转换为十六进制。 在.bashrc或Shell脚本中定义的函数。 awk '{print $1 ; d2h($2)}' file awk:调用未定义函数d2h输入记录号1,文件文件源行号1
24 bash  awk 

2
为什么从管道读取时awk会做全缓冲
我正在从连接到发送nmea字符串的gps设备的串行端口读取。 一个简化的调用来说明我的观点: $ awk '{ print $0 }' /dev/ttyPSC9 GPGGA,073651.000,6310.1043,N,01436.1539,E,1,07,1.0,340.2,M,33.3,M,,0000*56 $GPGSA,A,3,28,22,09,27,01,19,17,,,,,,2.3,1.0,2.0*39 $GPRMC,073651.000,A,6310.1043,N,01436.1539,E,0.42,163.42,070312,,,A*67 GPGGA,073652.000,6310.1043,N,01436.1540,E,1,07,1.0,339.2,M,33.3,M,,0000*55 $GPGSA,A,3,28,22,09,27,01,19,17,,,,,,2.3,1.0,2.0*39 如果我改为尝试从管道读取,awk会将输入发送到stdout之前先对其进行缓冲。 $ cat /dev/ttyPSC9 | awk '{ print $0 }' <long pause> GPGGA,073651.000,6310.1043,N,01436.1539,E,1,07,1.0,340.2,M,33.3,M,,0000*56 $GPGSA,A,3,28,22,09,27,01,19,17,,,,,,2.3,1.0,2.0*39 $GPRMC,073651.000,A,6310.1043,N,01436.1539,E,0.42,163.42,070312,,,A*67 GPGGA,073652.000,6310.1043,N,01436.1540,E,1,07,1.0,339.2,M,33.3,M,,0000*55 $GPGSA,A,3,28,22,09,27,01,19,17,,,,,,2.3,1.0,2.0*39 如何避免缓冲? 编辑:凯尔·琼斯(Kyle Jones)建议,猫正在缓冲它的输出,但是这似乎没有发生: $ strace cat /dev/ttyPSC9 | awk '{ print $0 }' write(1, "2,"..., 2) = 2 read(3, …
23 awk  tty  serial-port 


7
两个标签之间的文字
我想<tr> </tr>从html文档中检索这两个标签之间的任何内容。现在,我没有任何特定的html要求可以保证html解析器。我只是简单地需要一些匹配的东西,<tr>并</tr>在两者之间获取所有内容,并且可能会有多个trs。我尝试了awk,它可以工作,但是由于某种原因,它最终给了我提取的每一行的副本。 awk ' /<TR/{p=1; s=$0} p && /<\/TR>/{print $0 FS s; s=""; p=0} p' htmlfile> newfile 怎么办呢?

7
仅在逗号分隔文件中删除引号之间的逗号
我有一个用逗号(,)分隔的输入文件。有一些用双引号引起来的字段,其中用逗号分隔。这是示例行 123,"ABC, DEV 23",345,534.202,NAME 我需要删除所有在双引号和双引号内出现的逗号。所以上面的行应该解析成如下图所示 123,ABC DEV 23,345,534.202,NAME 我尝试使用以下方法sed,但未给出预期的结果。 sed -e 's/\(".*\),\(".*\)/\1 \2/g' 任何快速的运用了sed,awk或者任何其他Unix工具吗?
23 text-processing  sed  awk  csv 


11
UNIX中用于减去日期的工具
Solaris UNIX中是否有任何工具(因此没有可用的GNU工具)来减去日期?我知道在Linux中,我们gawk可以从另一个日期中减去一个日期。但是在Solaris中,我们拥有的最大值nawk(已改进awk)无法执行日期计算。我也不能使用perl。 有什么办法可以进行日期计算20100909 - 20001010吗? 更新:bc能够执行日期计算吗?
22 shell  solaris  awk  utilities  date 


5
从awk程序中的路径中提取文件名
我有一个awk脚本,并且已将CSV文件传递给它。 awk -f script.awk /home/abc/imp/asgd.csv 我正在做的是在中获取FILENAME script.awk。FILENAME给了我完整的路径。由于我处于awk状态,因此无法使用basename FILENAME。 print FILENAME; /home/abc/imp/asgd.csv 我已经尝试过了 script.awk echo $FILENAME | awk -F"/" '{print $NF}' 但我无法在中执行此操作script.awk。我如何进入asgd.csvawk程序?
21 awk  filenames 


2
在awk中不区分大小写的搜索
我需要使用awk搜索关键字,但是我想执行不区分大小写(不区分大小写)的搜索。 我认为最好的方法是将搜索字词(“关键字”)和awk同时读取的目标行都大写。根据这个问题,我如何使用toupper所有大写字母进行打印,但是我不知道如何在匹配项中使用它,因为该答案仅显示了打印内容,而没有将大写文本保留在变量中。 在给出此输入的情况下,这是一个示例: blablabla &&&Key Word&&& I want all these text and numbers 123 and chars !"£$%& as output &&&KEY WORD&&& blablabla 我想要这个输出: I want all these text and numbers 123 and chars !"£$%& as output 这就是我所拥有的,但是我不知道如何添加toupper: awk "BEGIN {p=0}; /&&&key word&&&/ { p = ! p ; next } …

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.