2013-03-30 46 views
0

我有每行包含的形式的字符串萬線文件「數據:鍵」,這也是正確的,填充由8個字符,其中「:」是分隔符。我試圖用awk在Linux中打印自己的線路,這些對,使線#1 =數據和線#2 =鍵,並且我一直在使用該命令來實現這一點:如何從awk命令中刪除填充?

的awk -F:' {print $ 1;打印$ 2}」上的每個組的第二線路中發生<〜/ prices.txt

我的問題。出於某種原因,它的填充空白與刪除行中的數據一樣多。所以,如果我行是「26900:9976」中,第一行是「26900」,第二行是' 9976',空白包括在內。

如果好奇,我想這樣做這種方式,因爲我是通過管道將結果db_load進行B +樹中使用。

回答

0

不完全是你的答案,但你可以使用TR這個:

tr ':' '\n' < input 

也看不到的行爲,你與你的awk命令描述然而,你可以隨時添加一個sed的管道以除去前導空白:

tr ':' '\n' < ~/prices.txt | sed 's/^[ \t]*//' 
awk -F: '{print $1; print$2}' < ~/prices.txt | sed 's/^[ \t]*//' 
+0

這是因爲我的輸入文件中的每一行都用右填充了8個字符。我忘了提到這一點,所以我會編輯帖子。 – trainreq

+0

你能提供一個真實的輸入樣本嗎? – perreal

+0

我不確定你的意思。該文件的第一行是'xxx19900:1',其中x =空格。 x的數量根據列的數據段中有多少個字符而發生變化。 – trainreq

0

可以使用正則表達式作爲字段分隔符:冒號後面的零個或多個空白字符將分隔字段。

awk -F ':[[:space:]]*' '{print $1; print $2}' < ~/prices.txt