2014-05-01 22 views
2

嗨'我試圖只保留逗號分隔字段的第一個和最後一個值在我的數據上。以下是我的輸入數據會是什麼樣子awk只保留逗號分隔的字段上的第一個和最後一個值

a 1 y 1,2,4,3,6,2,1 
b 2 y 3,56,3,2,1 
c 3 n 4,3,2,1,4 

我只想繼續我的數據的第四coulmn第一和最後一個值,使我的數據是這樣的:

a 1 y 1,1 
b 2 y 3,1 
c 3 n 4,4 

你能任何人都可以幫我如何做到這一點?謝謝

+1

你問是在彼此非常微小變化的幾個問題。根據你收到的所有答案,你學到了什麼? –

+1

我會說不多。下次發佈你已經嘗試過的。 – Jotne

回答

4

試試這個:

awk -F, -vOFS=, '{print $1,$NF}' input.txt 

  • -F,輸入分隔符
  • -vOFS=,輸出域
  • $1第一場
  • $NF最後一個字段
1

awk -F, '{ printf "%s,%s\n", $1, $NF}'應該做的工作!

+0

是的,謝謝@JS웃,但kev剛創建了一個答案,所以我沒有糾正。 – Aif

+1

其實,我測試了printf但得到了一個奇怪的行爲,但這是我的名詞的錯。編輯;-) – Aif

1

嘗試此awk命令:

awk '{size = split($4,numbers,",")} {print $1" "$2" "$3" "numbers[1]","numbers[size]}' 

此拆分第四字段到一個數組,節省尺寸size,打印第一3個字段,則numbers陣列的第一和最後一個元素。

1

如果您的其他字段可以包含逗號:

$ awk '{sub(/,.*,/,",",$NF)}1' file 
a 1 y 1,1 
b 2 y 3,1 
c 3 n 4,4 

如果不是:

$ awk '{sub(/,.*,/,",")}1' file 
a 1 y 1,1 
b 2 y 3,1 
c 3 n 4,4 
相關問題