Ho un file di testo che ha il seguente formato:grep: corrisponde a tutti i caratteri fino a (escluso) primo spazio vuoto
characters(that I want to keep) (space) characters(that I want to remove)
Così, per esempio:
foo garbagetext
hello moregarbage
keepthis removethis
(etc.)
Così ho cercato utilizzare il comando grep in Linux per mantenere solo i caratteri di ogni riga e senza includere il primo spazio vuoto. Ho provato i numerosi tentativi, quali:
grep '*[[:space:]]' text1.txt > text2.txt
grep '*[^\s]' text1.txt > text2.txt
grep '/^[^[[:space:]]]+/' text1.txt > text2.txt
cercando di mettere insieme da diversi esempi, ma non ho avuto fortuna. Tutti producono un file vuoto text2.txt
. Sono nuovo in questo. Che cosa sto facendo di sbagliato?
* EDIT:
Le parti Voglio continuare a includere le lettere maiuscole. Quindi voglio mantenere qualsiasi/tutti i caratteri fino a e non includendo lo spazio (rimuovendo tutto dallo spazio vuoto in poi) in ogni riga.
** EDIT:
Il testo spazzatura (che voglio rimuovere) può contenere qualsiasi cosa, inclusi gli spazi, caratteri speciali, ecc Così, per esempio:
AA rough, cindery lava [n -S]
Dopo aver eseguito grep -o '[^ ]*' text1.txt > text2.txt
, il riga sopra diventa:
AA
rough,
cindery
lava
[n
-S]
in text2.txt. (Tutto quello che voglio mantenere è AA
)
SOLUZIONE (fornito da Rohit Jain con un ulteriore ingresso per beny23):
grep -o '^[^ ]*' text1.txt > text2.txt
Include la maiuscola? Ho eseguito entrambi e produce solo lo stesso file. Vorrei rimuovere tutto dallo spazio in poi (mantenendo "foo" "ciao" e "keepthis" nell'esempio che ho dato). –
@lord_sneed .. Puoi provare di nuovo. Ho aggiunto l'ancora '^', che si abbina solo all'inizio della riga. –
Questo ancora solo riduplica il file. Ho corso di nuovo entrambi. : S –