2013-10-21 34 views
0

我是使用linux和命令行的新手,但我正在學習工作。我可以做大部分的基礎知識,但是我被困在某些東西上。用同一行中指定的另一個條目替換一行中的條目..如何爲多行執行此操作?

我現在有一個txt文件,看起來像這樣:

AB 1 1 1 1 0 0 0 0 1 0 1 0

BF 1 0 0 0 1 1 0 1 1 1 0 1

FG 0 0 0 0 0 0 0 0 0 0 1 0

IE中。在每行的開始處有兩個字母 - 寫在同一行中的每個數字'0'對應於第一個字母,並且寫在同一行中的每個數字'1'對應於第二個字母。它是空間分隔的。

我想要做的是將每一個0和1替換爲該行對應的字母。

所以上面的通道會變成:

ABBBBBAAAABABA

BFFBBBFFBFFFBF

FGFFFFFFFFFFGF

有誰知道我能做到這一點用awk或sed的(或更好的方法)?

謝謝!

回答

3

使用gsub

$ awk '{gsub(0, $1); gsub(1, $2)} 1' your_file 
A B B B B B A A A A B A B A 
B F F B B B F F B F F F B F 
F G F F F F F F F F F F G F 
  • gsub(0, $1)替換每0$1。而$1是第一場。
  • gsub(1, $2)$2代替每1。而$2是第二個領域。
  • 這些命令被括在括號內,並且輸出打印了一個真實的條件,如1,以便完成默認的awk行爲(print $0)。
相關問題