【问题标题】:Find all words starting with a fix string in a file?查找文件中以修复字符串开头的所有单词?
【发布时间】:2013-08-29 18:56:35
【问题描述】:

如何在我的 csv 文件中找到所有以 $ 开头的单词

我的文件是这样的:

Test1,$Var1,$varCab1,$Vargab1,Comment1
Test2,$Var2,$varCab2,$Vargab2,Comment2
Test3,$Var3,$varCab3,$Vargab3,Comment3

作为我想要的输出

$Var1
$varCab1
$Vargab1
$Var2
$varCab2
$Vargab2
$Var3
$varCab3
$Vargab3

【问题讨论】:

  • 你有什么尝试吗?有什么错误或代码吗?

标签: unix solaris rhel


【解决方案1】:

尝试关注 (grep -oE '\$\w+' filename):

$ cat 1.csv
Test1,$Var1,$varCab1,$Vargab1,Comment1
Test2,$Var2,$varCab2,$Vargab2,Comment2
Test3,$Var3,$varCab3,$Vargab3,Comment3
$ grep -oE '\$\w+' 1.csv
$Var1
$varCab1
$Vargab1
$Var2
$varCab2
$Vargab2
$Var3
$varCab3
$Vargab3

使用awk:

$ awk -F, '{ for(i=1;i<=NF;i++) if ($i ~ /\$/) print $i; }' 1.csv
$Var1
$varCab1
$Vargab1
$Var2
$varCab2
$Vargab2
$Var3
$varCab3
$Vargab3

【讨论】:

  • 这适用于 RHEL,但不适用于我的 SunOS 系统。我只是意识到我想要一个双兼容的代码。
  • @PiyushBaijal,我添加了一个使用 awk 的替代解决方案。
【解决方案2】:

使用tr 和grep:

$ tr ',' '\n' < inputfile | grep "^[$]"
$Var1
$varCab1
$Vargab1
$Var2
$varCab2
$Vargab2
$Var3
$varCab3
$Vargab3

【讨论】:

    【解决方案3】:

    使用perl:

    perl -ne 'for (m/\$\w+/g) { print $_, "\n" }' < inputfile
    

    甚至更短:

    perl -ne 'print map("$_\n", m/\$\w+/g)' < inputfile
    

    解释:

    • 正则表达式\$\w+ 匹配$ 后跟一个或多个单词字符。
    • m//g 表达式返回匹配列表。
    • perl -ne 为输入中的每个文件运行表达式,将行插入$_,然后由m//g 表达式使用。

    【讨论】:

      猜你喜欢
      • 2012-07-10
      • 1970-01-01
      • 2011-05-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-02
      • 1970-01-01
      • 2015-11-10
      • 1970-01-01
      相关资源
      最近更新 更多