2016-03-11 22 views
0

我有幾個以字符串「file」開頭的文件,然後是一個數字(file1,file2等)。linux從幾個文件中獲取特定的字段

這些文件的內容是相似的,看起來像這樣

file1: 
$xx_ at 10.0 "$elt_(0) coordinates 636.46 1800.37 9.90" 
$xx_ at 10.0 "$elt_(1) coordinates 367.78 1263.63 7.90" 

對於每一個文件,我想只保留元素的索引,只是座標後2個數字字段(在同一個文件或另一個文件):

文件1:

0 636.46 1800.37 
1 367.78 1263.63 

我試圖做的是這樣的(但是這是不正確的)

find . -name "file*"|while read fname; do 
    echo "$fname" 
    for line in $(cat "$fname") do 
    FS="[_() ]" 
    print $7 "\t" $10 "\t" $11 > $fname 
    done 
done 
+0

是(在'$ elt_數0)'與索引相同? – mstruebing

回答

1

這是awk的完美使用。用awk你可以簡單地打印特定的單詞。

如果索引您可以使用此行號:

cat -n ./file1 | awk '{print $1 -1 " " $7 " " $8}'這個簡單的打印行號的文件和打印第一,第七和第八字。

如果該指數是在parenthese的$elt_(0)號碼,您可以用sed這樣的:

cat ./file1 | awk '{print $4 " " $7 " " $8}' | sed 's/"$elt_(//g' | sed 's/)//g' | sed 's/"//g' 

輸出:

1 636.46 1800.37 
2 367.78 1263.63 

Link to awk Link to sed

+0

我用awk試過,我可以爲單個文件做,但不能在循環中。因爲我有幾個文件,所以不能一個接一個地做。 –

+0

什麼是索引? – mstruebing

+0

'find -type f -iname'* file-pattern *「-exec script.sh {} \;'script.sh在這種情況下就是awk-stuff。 – mstruebing

相關問題