MSpec在Appharbor上(MSpec on Appharbor)
原文:https://stackoverflow.com/questions/8223469
最满意答案
更新 :第二个想法,你可以使用单个输入字段分隔符regex(通过选项
-F
指定,转换为变量FS
):awk -F ',\\[?|\\]' '{ print $2 ,$3, $6 ,$7 }' removed-apply.log.2016-02-19
注意需要加倍
\
instances以在正则表达式的上下文中生成跟随它们的字符作为文字 。 例如,\\[
转换为文字\[
通过awk
的初始字符串解析, 正则表达式解析然后看作\[
,导致解释为文字[
。 简而言之: string,\\[?|\\]
产生正则表达式,\[?|\]
。
原始答案 (已接受):
您的输入仍然明确是面向行的 ,因此没有理由更改输入记录分隔符
RS
。而是分两步解析每一行:
- 使用
FS
最初将输入分为2个字段:在[
,之前[...]
之间。
- 注意:下面使用的奇怪的正则表达式,
[][]
,是一个包含2个文字字符的字符集([...]
,]
和[
; 它在概念上等同于\[|\]
。- 然后,使用
split()
将每个结果字段拆分为存储在数组中的子字段:awk ' BEGIN { FS="[][]" } # split into $1 (before "[") and $2 (between "[...]") { split($1, fa1, ",") # split $1 into subfields by "," and store in array fa1 split($2, fa2, ",") # split $2 into subfields by "," and store in array fa2 # Output fields of interest print fa1[2], fa1[3], fa2[1], fa2[2] }' removed-apply.log.2016-02-19
Update: On second thought, you can get away with a single input field-separator regex (specified via option
-F
, which translates to variableFS
):awk -F ',\\[?|\\]' '{ print $2 ,$3, $6 ,$7 }' removed-apply.log.2016-02-19
Note the need to double
\
instances to produce the character following them as a literal in the context of a regex. E.g,\\[
is turned into literal\[
byawk
's initial string parsing, which regex parsing then sees as\[
, resulting in interpretation as literal[
. In short: string,\\[?|\\]
results in regex,\[?|\]
.
Original answer (as accepted):
Your input is still clearly line-oriented, so there's no reason to change
RS
, the input-record separator.Instead, parse each line in two steps:
- Use
FS
to initially break the input into 2 fields: before[
, and between[...]
.
- Note: The strange-looking regular expression used below,
[][]
, is a character set([...]
) containing 2 literal characters,]
and[
; it is conceptually equivalent to\[|\]
.- Then, use
split()
to split each resulting field by,
into subfields stored in arrays:awk ' BEGIN { FS="[][]" } # split into $1 (before "[") and $2 (between "[...]") { split($1, fa1, ",") # split $1 into subfields by "," and store in array fa1 split($2, fa2, ",") # split $2 into subfields by "," and store in array fa2 # Output fields of interest print fa1[2], fa1[3], fa2[1], fa2[2] }' removed-apply.log.2016-02-19
相关问答
更多-
更新 :第二个想法,你可以使用单个输入字段分隔符regex(通过选项-F指定,转换为变量FS ): awk -F ',\\[?|\\]' '{ print $2 ,$3, $6 ,$7 }' removed-apply.log.2016-02-19 注意需要加倍 \ instances以在正则表达式的上下文中生成跟随它们的字符作为文字 。 例如, \\[转换为文字\[通过awk的初始字符串解析, 正则表达式解析然后看作\[ ,导致解释为文字 [ 。 简而言之: string ,\\[?|\\]产生正则表达 ...
-
使用: search='md2' df -h | awk -v x="$search" '$0~x{print $5}' 怎么运行的: -vx="$search" 这告诉awk定义一个awk变量x ,其值为$search 。 $0~x{print $5} $0 ~ x告诉awk选择与变量x中的正则表达式匹配的行。 对于选定的行,将打印字段5。 讨论 df -h | awk '$search' | awk '{print $5}' 以上操作无效,因为$search在单引号内,并且阻止bash替换$sear ...
-
AWK命令帮助(AWK command help)[2023-01-03]
cat /etc/passwd | awk -F ":" '$7=="/bin/bash" { print $1 }' cat /etc/passwd | awk -F ":" '$7=="/bin/bash" { print $1 }' -
不完全是你的答案,但你可以使用tr: tr ':' '\n' < input 我也没有看到你用awk命令描述的行为,但是,你总是可以在管道中添加一个sed来删除前导空格: tr ':' '\n' < ~/prices.txt | sed 's/^[ \t]*//' awk -F: '{print $1; print$2}' < ~/prices.txt | sed 's/^[ \t]*//' Not exactly your answer but you can use tr for this: ...
-
awk -v tgt="Test2" 'BEGIN{RS=""; ORS=RS"\n"; tgt="
"tgt"
"} $0 ~ tgt' file 在BEGIN节中修改变量要比连接然后在每个输入行测试一次字符串更有效。 awk -v tgt="Test2" 'BEGIN{RS=""; ORS=RS"\n"; tgt=""tgt"
"} $0 ~ tgt' file Modifying the variable in the BEGIN section is muc ... -
你只需要将两个字符串连接起来. : splot "输入 $ cat f vipin kumar ........................ kumar ......bangalore something something ....... ; vipin kumar ........................ kumar ......bangalore something something .......(testing ) ; vipin kumar ......................... kumar ..... ...你可以做: awk '{this=last;last=$0} END{print this}' file 或者,如果您不介意将整个文件放在内存中: awk '{a[NR]=$0} END{print a[NR-1]}' file 或者,如果它只是基于行数(或记录计数),您可以保持滚动删除,这样您就不会对内存过于贪婪: $ seq 999999 | tail -2 999998 999999 $ seq 999999 | awk '{a[NR]=$0; delete a[NR-3]} END{print ...那是因为记录分隔符出现在记录的末尾 。 所以9:08:06.899627 [DEBUG]是空记录的结尾, 9:08:06.899707 [INFO]是与你的GUID正则表达式匹配的记录的结尾。 您需要保存以前的RT并输出保存的RT 。 gawk --re-interval 'BEGIN{RS="[0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2}.[0-9]{1,6} \\[[A-Z]*\\]";} /983a99f8-bec6-11e1-80dd-059a821d0b73/ {print sa ...您可以将之前的awk命令修改为: awk -v RS='' '/\n--Hello /{print gensub(/.*\n(--Hello [^\n]*).*/, "\\1", "1")} RT{gsub(/.*
|\n/, ""); print " " $0 RT}' file Example line 1 --Hello Example line 1.7Example line 2 --Hello Example ...相关文章
更多最新问答
更多- h2元素推动其他h2和div。(h2 element pushing other h2 and div down. two divs, two headers, and they're wrapped within a parent div)
- 创建一个功能(Create a function)
- 我投了份简历,是电脑编程方面的学徒,面试时说要培训三个月,前面
- PDO语句不显示获取的结果(PDOstatement not displaying fetched results)
- Qt冻结循环的原因?(Qt freezing cause of the loop?)
- TableView重复youtube-api结果(TableView Repeating youtube-api result)
- 如何使用自由职业者帐户登录我的php网站?(How can I login into my php website using freelancer account? [closed])
- SQL Server 2014版本支持的最大数据库数(Maximum number of databases supported by SQL Server 2014 editions)
- 我如何获得DynamicJasper 3.1.2(或更高版本)的Maven仓库?(How do I get the maven repository for DynamicJasper 3.1.2 (or higher)?)
- 以编程方式创建UITableView(Creating a UITableView Programmatically)
- 如何打破按钮上的生命周期循环(How to break do-while loop on button)
- C#使用EF访问MVC上的部分类的自定义属性(C# access custom attributes of a partial class on MVC with EF)
- 如何获得facebook app的publish_stream权限?(How to get publish_stream permissions for facebook app?)
- 如何防止调用冗余函数的postgres视图(how to prevent postgres views calling redundant functions)
- Sql Server在欧洲获取当前日期时间(Sql Server get current date time in Europe)
- 设置kotlin扩展名(Setting a kotlin extension)
- 如何并排放置两个元件?(How to position two elements side by side?)
- 如何在vim中启用python3?(How to enable python3 in vim?)
- 在MySQL和/或多列中使用多个表用于Rails应用程序(Using multiple tables in MySQL and/or multiple columns for a Rails application)
- 如何隐藏谷歌地图上的登录按钮?(How to hide the Sign in button from Google maps?)
- Mysql左连接旋转90°表(Mysql Left join rotate 90° table)
- dedecms如何安装?
- 在哪儿学计算机最好?
- 学php哪个的书 最好,本人菜鸟
- 触摸时不要突出显示表格视图行(Do not highlight table view row when touched)
- 如何覆盖错误堆栈getter(How to override Error stack getter)
- 带有ImageMagick和许多图像的GIF动画(GIF animation with ImageMagick and many images)
- USSD INTERFACE - > java web应用程序通信(USSD INTERFACE -> java web app communication)
- 电脑高中毕业学习去哪里培训
- 正则表达式验证SMTP响应(Regex to validate SMTP Responses)