2013-08-27 59 views
-1

我怎樣才能找到所有我的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 
+0

你嘗試過什麼嗎?任何錯誤或代碼? – Gonzix

回答

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 
+0

這適用於RHEL,但不適用於我的SunOS系統。我只是意識到我想要一個雙兼容的代碼。 –

+0

@PiyushBaijal,我添加了一個使用'awk'的替代解決方案。 – falsetru

0

使用trgrep

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

使用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表達式使用該行。
相關問題