grep: 最初の空白スペースまでのすべての文字に一致します(最初の空白スペースは含みません) 質問する

grep: 最初の空白スペースまでのすべての文字に一致します(最初の空白スペースは含みません) 質問する

次の形式のテキスト ファイルがあります。

characters(that I want to keep) (space) characters(that I want to remove)

たとえば次のようになります。

foo garbagetext
hello moregarbage
keepthis removethis
(etc.)

そこで、Linux の grep コマンドを使用して、各行の最初の空白までの文字のみを保持しようとしました。次のようなさまざまな方法を試しました。

grep '*[[:space:]]' text1.txt > text2.txt
grep '*[^\s]' text1.txt > text2.txt
grep '/^[^[[:space:]]]+/' text1.txt > text2.txt

さまざまな例から組み合わせて試してみましたが、うまくいきませんでした。すべて空のtext2.txtファイルが生成されます。私はこの分野の初心者です。何が間違っているのでしょうか?

*編集:

保持したい部分には大文字が含まれます。したがって、各行の空白スペースまでの文字をすべて保持し、空白スペースを含まない文字をすべて削除します (空白スペース以降のすべてを削除します)。

**編集:

削除したいゴミテキストには、スペース、特殊文字など、あらゆるものを含めることができます。たとえば、次のようになります。

AA rough, cindery lava [n -S]

を実行するとgrep -o '[^ ]*' text1.txt > text2.txt、上記の行は次のようになります。

AA
rough,
cindery
lava
[n
-S]

text2.txt に記述します。(保存したいのはAA)


解決策 (Rohit Jain 提供、beny23 による追加入力):

grep -o '^[^ ]*' text1.txt > text2.txt

ベストアンサー1

*量指定子を間違った場所に置いています。

代わりにこれを試してください: -

grep '^[^\s]*' text1.txt > text2.txt

あるいは、もっと良いのは: -

grep '^\S*' text1.txt > text2.txt  

\S一致することを意味する空白以外文字。アンカーは^行の先頭に一致するために使用されます。

おすすめ記事