在awk中,我可以在字段中搜索以下值:
$ echo -e "aa,bb,cc\ndd,eaae,ff" | awk 'BEGIN{FS=",";}; $2=="eaae" {print $0};'
aa,bb,cc
dd,eaae,ff
Run Code Online (Sandbox Code Playgroud)
我可以通过正则表达式搜索
$ echo -e "aa,bb,cc\ndd,eaae,ff" | awk 'BEGIN{FS=",";}; /[a]{2}/ {print $0};'
aa,bb,cc
dd,eaae,ff
Run Code Online (Sandbox Code Playgroud)
我可以强制awk将regexp搜索应用于特定字段吗?我正在寻找类似的东西
$ echo -e "aa,bb,cc\ndd,eaae,ff" | awk 'BEGIN{FS=",";}; $2==/[a]{2}/ {print $0};'
Run Code Online (Sandbox Code Playgroud)
期待结果:
dd,eaae,ff
Run Code Online (Sandbox Code Playgroud)
任何人都知道如何使用awk做到这一点?
接受的响应 - 运算符"〜"(感谢hek2mgl):
$ echo -e "aa,bb,cc\ndd,eaae,ff" | awk 'BEGIN{FS=",";}; $2 ~ /[a]{2}/ {print $0};'
Run Code Online (Sandbox Code Playgroud)
您可以使用 :
$2 ~ /REGEX/ {ACTION}
Run Code Online (Sandbox Code Playgroud)
如果正则表达式应仅应用于第二个字段(例如).
在您的情况下,这将导致:
awk -F, '$2 ~ /^[a]{2}$/' <<< "aa,bb,cc\ndd,eaae,ff"
Run Code Online (Sandbox Code Playgroud)
您可能想知道为什么我刚刚在awk程序中使用了正则表达式而没有print.这是因为您的操作是print $0- 打印当前行 - 这是awk中的默认操作.
| 归档时间: |
|
| 查看次数: |
80 次 |
| 最近记录: |