2013-10-05 80 views
-1

我有一個用於學校的UNIX任務。 我們必須採取以下文字並列出所有連續單詞。例如,這個句子:'這是我的第一個問題'。必須成爲:Unix:用2個字和一個換行符替換2個字

這是

是我

我的第一

第一個問題

(沒有標點符號或數字)

這是文本文件,我們需要更改:https://docs.google.com/file/d/0BwTO3Dwf7nQfSFU5TEpLZ1BlVHM/edit?usp=sharing

這是我到目前爲止有:

$ cat reservoir.txt | tr -d "\n," | tr -d -c [A-Z,a-z," "] | tr -s ' ' 

基本上,我只是刪除換行符,標點符號,數字和連續的空格準備我的文字。從這裏起,我被卡住了。

我的想法是讓Linux用'word1(space)word2 \ n' 替換'word1(space)word2',但是我怎樣才能在tr或sed中指定任何單詞?我已經嘗試*但它沒有工作(我可能做錯了什麼)

回答

0

您需要sed的替代命令使用RegExp。

| sed 's/\b\([a-z]\+\)/\1\n\1/g' 

[a-z] +匹配1個或多個字符。 \(\)將匹配存儲到內存中,\ 1回想起它。

0

這可能爲你工作(GNU SED):

sed -r ':a;$!{N;ba};s/[^[:alpha:] ]/ /g;s/ +/ /g;s/^ | $//g;s/(\S+ \S+) /\1\n/g' file 

啜食文件到內存中。將所有不是a-z或A-Z的字符或空格替換爲空格。將所有多個空間擠壓到一個空間。在文件的開頭和結尾處切斷空格。 替換所有出現的非空格,後跟空格,後跟非空格,後跟空格,非空格,後跟空格,後跟非空格,後跟換行符。並打印。