2010-02-09 45 views
3

我試圖管數據到「剪切」,比如說,刪除第一列文本。這工作使用linux「剪切」與標準輸入

$ cat test.txt | cut -d\ -f2- 

從標準輸入讀取也可以工作:

$ cut -d\ -f2- - 
? doc/html/analysis.html 
? doc/html/classxytree-members.html 
<CTRL+D> 

然而,一旦管道參與,它不接受我的<CTRL+D>了,我不能使信號「結束文件「:

$ cut -d\ -f2- - | xargs echo 

更新:這顯然是一個老版本的bash(3.00.15)的錯誤。它在更新的版本中工作(嘗試4.0.33和3.2.25)。儘管有些解決方法會很好,因爲我無法輕鬆升級。


背景:我有一個腳本/ oneliner,讓我的cvs status形式

? filename 

例如精簡輸出(我知道,CVS ...)對於尚未提交的文件。我希望能夠複製+粘貼該命令的部分輸出,並將其用作另一個命令的輸入,並將這些文件添加到cvs中。說:

$ cut -d\ -f2- | xargs cvs add 
<paste lines> 
<CTRL-D>  # <-- doesn't work 

想法?

回答

4

你試過

$ cat | cut -d\ -f2- | xargs cvs add 
<paste lines> 
<CTRL-D>  # <-- doesn't work 
+0

這在原則上起作用,但不適用於我的情況。原來問題是一個非常古老的bash版本。 順便說一句,你的例子中的'cat'什麼也不做,可以省略。它只是將鍵盤輸入傳送給'cut',無論如何,當調用沒有文件名的剪切時,你會得到它。 有一個古老的笑話,它被認爲是通過管道發送貓的動物殘忍;-)。 – jdm 2010-02-09 12:30:55

0

你的例子我很好地工作。你在用什麼外殼?什麼工具?

一兩件事,有時絆倒人的是,希望按Ctrl - 如果它是在該行的第一個字符d纔有效。如果您複製並粘貼,則有時會意外地將空白作爲該行的第一個字符,或者在粘貼塊的末尾沒有換行符,這種情況下Ctrl - D將不起作用。剛打回來,然後嘗試Ctrl - D再次看看是否可以解決您的問題。

+0

我在Ubuntu Karmic(9.10)上再次嘗試了它,並且的確如預期的那樣工作。事實證明,我的工作計算機使用古老的bash 3.00.15(我堅持使用舊的Linux發行版來運行「傳統」軟件)。儘管如此,找到一種解決方法也很好。 – jdm 2010-02-09 12:19:05