regex - Shell/AWK - 它不显示值,以及如何添加 reg exp

标签 regex linux perl unix awk

我有一个小问题,下面的代码工作正常,但现在什么都不显示,我不太明白错误在哪里。

> #! /bin/bash

awk -F, '       FILENAME = $1 { FS = ":" }

        { print $1 " "  $2 " "  $3 " " $4 }





                '
  • 我想添加一些选项,例如:./search thefile -C

我希望 reg ex -C 像一个选项一样显示一些特定的东西。

对此有什么想法吗?

谢谢

最佳答案

只是为了让你开始。 . .

如果文件test.dat是这样的

100:200:300:400

然后这个 shell 脚本将打印这些值中的每一个。

#! /bin/bash
awk 'BEGIN { FS = ":" } NF==4 && $0 ~/:/{ print FILENAME, $1 " "  $2 " "  $3 " " $4 }' $1

使用单引号参数调用 shell 脚本“test.sh”,如

./test.sh 'test*.dat'

测试 NF>=4 确保在尝试打印之前至少有四个字段。正则表达式匹配 $0~/:/ 确保该行至少有一个冒号。 (可能有更好的方式来表达您想要做的事情。)

FILENAME 变量告诉您​​该行来自哪个文件。在您确信一切按预期运行后,您或许可以删除它。

关于regex - Shell/AWK - 它不显示值,以及如何添加 reg exp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10268355/

相关文章:

php - 正则表达式电子邮件 - 如何在电子邮件中允许加号?

linux - Linux 的最大管道命令

perl - 使用 Net::SFTP::Foreign 通过 SFTP 上传文件

linux - Windows 相当于 ">/dev/null &"

Java 1.7ea : Files. probeContentType(path) 返回 null

perl - 如何将 Perl 数组划分为大小相等的 block ?

perl - 如何跳过第一次出现的模式并替换第二次出现的字符串的其余部分

mysql - 如何用正则表达式在 MYSQL 中说不是空字符串

python - Pandas 数据框从父列和子列中删除最后一个 "\"

regex - 为什么这个正则表达式会遗漏两个数字之间的一个空格?