2014-04-25 35 views
1

我想轉換一個給定的文件這樣的文字:擊合併連續兩行的文件

87665 
S 
3243423 
S 
334243 
N 
... 

到這樣的事情:

87665,S 
3243423,S 
334243,N 
... 

我一直在閱讀一些similar questions,但它沒有工作...有沒有辦法做到這一點在Linux中的單行命令? 謝謝!

+0

是的,我沒有找到上面的答案,是重複的..謝謝 – Aitor

+1

我記得它,因爲我已經回答了這個問題。最初,我以爲這是相同的問題鏈接,但後來沒有找到我的答案...:D – anishsane

+0

:DI試圖找到答案一段時間,但我沒有找到它,標題「我怎麼能結合這些文件「..對我來說太普通了!嘿嘿...無論如何,我剛剛投了我的問題作爲重複 – Aitor

回答

7

使用sed

sed '$!N;s/\n/,/' filename 

使用paste

paste -d, - - < filename 

paste將在輸入具有奇數行的情況下留下尾隨,

5

這樣的事情可能會爲你工作:

$ awk 'NR%2{a=$0;next}{print a","$0}' file 
87665,S 
3243423,S 
334243,N 

要與奇數行處理文件,你可以這樣做:

awk '{printf "%s%s", $0, NR%2?",":ORS}' file 
+0

你可能想用'ORS'而不是'「\ n」' –

+0

我同意。如果用戶設置了不同的ORS,這可能會更好。 (我們也保存一個字符:)) – user000001

+1

+1:@ user000001你可以做'awk'ORS =(NR%2)?「,」:RS'file' –

1

只是爲了好玩,純bash的解決方案:

while IFS= read -r l1; do 
    read -r l2 
    printf '%s\n' "$l1${l2:+,$l2}" 
done < file 

如果有一個奇數行,最後一行不會有後面的逗號。