スペースを削除した後の文字列ファイル

スペースを削除した後の文字列ファイル

次のように複数のログファイルを生成しました。

Date;Time;Brand;User;Node;Location
01/01/01;666;blabla;George Armani;Springfield

文字列を削除したいアルマーニしかし、私のコマンドは機能しません。

cat file.log | grep identifier | cut -d ";" -f | sort | uniq | grep -o '^\S*' > newfile.log

次の人をフォローしています。郵便はがき

別の方法がありますか?

PS。同じフィールドに長さの異なる文字列があります。

答え1

使用awk:

awk -F\; 'OFS = ";"{ if ($4 ~ " "); split($4, fname, / /); $4=fname[1]; print }' input

これにより、4番目の列が空白に分割され、最初の要素に設定されます。


これは、4番目の列の内容に関係なく機能します。

$ cat input
Date;Time;Brand;User;Node;Location
01/01/01;666;blabla;George Armani;Springfield
02/02/02;777;blabla;Jesse_b;South Park
03/03/03;888;blabla;test name;somewhere

$ awk -F\; 'OFS = ";"{ if ($4 ~ " "); split($4, fname, / /); $4=fname[1]; print }' input
Date;Time;Brand;User;Node;Location
01/01/01;666;blabla;George;Springfield
02/02/02;777;blabla;Jesse_b;South Park
03/03/03;888;blabla;test;somewhere

答え2

ファイルから「Armani」テキストを削除するには、次のコマンドを使用します。

$ sed 's/Armani//' myfile
Date;Time;Brand;User;Node;Location
01/01/01;666;blabla;George ;Springfield
$

その場で編集するには:

$ sed -i 's/Armani//' myfile
$ cat myfile
Date;Time;Brand;User;Node;Location
01/01/01;666;blabla;George ;Springfield
$

削除したい場合みんな「Armani」が1行に表示されたら、1つを追加してくださいgsed 's/Armani//g'

答え3

猫は意味がないので行くことができます。識別子は例示入力にないので、blablaを意味すると仮定する。あなたの姓を削除するためのあなたの要求は、例のコマンドとまったく関係がないようですので、これを変更してみましょう。

grep blabla file.log | perl -pe 's/ [^ ;]+;/;/g' > newfile.log

これがあなたの要件を満たしていない場合は、明確にするために質問を書き直す必要があります。

関連情報