質問
たとえば、テキストの最初の列を切り取るために、データを「cut」にパイプしようとしています。これは機能します
$ 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 を試しました)。ただし、簡単にアップグレードできないため、いくつかの回避策があれば幸いです。
背景:次の要約出力を提供するスクリプト/ワンライナーがあります。 cvs status
(CVS は知っています...) フォーム内
? filename
例えばまだコミットされていないファイルの場合。そのコマンドからの出力の一部をコピーして貼り付け、これを別のコマンドへの入力として使用し、これらのファイルを cvs に追加できるようにしたいと考えています。言う:
$ cut -d\ -f2- | xargs cvs add
<paste lines>
<CTRL-D> # <-- doesn't work
アイデアは?
解決
やってみました
$ cat | cut -d\ -f2- | xargs cvs add
<paste lines>
<CTRL-D> # <-- doesn't work
他のヒント
あなたの例は私にとってはうまくいきます。どのようなシェルを使用していますか?どのようなユーティリティですか?
時々人々をつまずかせることの 1 つは、 Ctrl-D それが行の最初の文字である場合にのみ機能します。コピーして貼り付ける場合、誤って行の最初の文字として空白が含まれたり、貼り付けられたブロックの末尾に改行が含まれなかったりすることがあります。その場合は、 Ctrl-D 機能しません。Return キーを押して試してください Ctrl-D もう一度試して、問題が解決するかどうかを確認してください。
所属していません StackOverflow