次の形式のテキスト ファイルがあります。
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
一致することを意味する空白以外文字。アンカーは^
行の先頭に一致するために使用されます。