5

たとえば、テキストの最初の列を切り取るために、データを「切り取り」にパイプしようとしています。これは動作します

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

stdinからの読み取りも機能します。

$ 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を試しました)。ただし、簡単にアップグレードできないため、回避策があると便利です。


背景:(私がcvs status知っている、CVS ...)の要約出力をフォームで提供するスクリプト/ワンライナーがあります

? filename

たとえば、まだコミットされていないファイルの場合。そのコマンドからの出力の一部をコピーして貼り付け、これを別のコマンドへの入力として使用して、これらのファイルをcvsに追加できるようにしたいと思います。言う:

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

アイデア?

4

2 に答える 2

4

やってみました

$ cat | cut -d\  -f2- | xargs cvs add
<paste lines>
<CTRL-D>        # <-- doesn't work
于 2010-02-09T04:40:12.827 に答える
0

あなたの例は私にとってはうまくいきます。どのシェルを使用していますか?何のユーティリティ?

時々人をつまずかせることの 1 つは、CtrlそれDが行の最初の文字である場合にのみ機能するということです。コピーして貼り付けると、誤って行の最初の文字に空白が含まれたり、貼り付けたブロックの末尾に改行がない場合があり、その場合はCtrl-Dが機能しません。リターンを押してから試してくださいCtrl-Dもう一度試して、問題が解決するかどうかを確認してください。

于 2010-02-09T04:53:31.227 に答える