2013-09-25 68 views
1

這可能很簡單,但會出錯。使用awk從具有空格的文本字符串的文件打印打印

我有格式類似於文件:

6468511 node_modules aotehu 
6468520 jsuno.js hello there 

這三列。最後一個可以是任何長度的任何文本(它是該項目的評論)。

我有類似下面的內容,但它只抓住最後一個你好。我將如何獲取所有文字'hello there'並將其保存到var $ 3:

awk '/6468520/ {print $3}' comments 

謝謝。

回答

2

試試這個

awk '/6468520/ {var1=$1; var2=$2; $1=$2=""; sub(/^ +/, ""); 
    print var1, var2, $0}' file 

消除從$0$1$2。左修$0和打印

+0

Awesmoe謝謝!但我也想保持1美元和2美元左右。所以我會有$ 1 = 6468520 $ 2 = filename $ 3 = comment。 – Jonovono

+0

@ user2433617或者分配$ 1和$ 2給tempvars,比如tmp1 = $ 1或者使用製表符分隔的數據,那麼$ 3將包含所有單詞。祝你好運。 – shellter

+0

@ user2433617,作爲避難所指出,您可以使用臨時變量。查看更新的解決方案 – iruvar

1

可以使用grepcut

grep -e ^6468520 your.file | cut -d' ' -f3- 

grep將打印與6468520啓動線和削減將通過空格分割線和打印從第三列到行的末尾。

0

這將刪除$ 1和$ 2並打印休息。

awk '/6468520/ {$1=$2="";sub(/^ +/,x);print}' file 
hello there