删除空格后的字符串文件

删除空格后的字符串文件

我生成了许多日志文件,如下所示:

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

我正在关注下一个邮政

还有另一种方法吗?

附言。同一字段中存在长度不同的字符串。

答案1

使用awk

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

这将用空格分割第四列,然后将其设置为第一个元素。


无论第四列中的内容如何,​​都应该有效:

$ 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”时,添加一个g,例如sed 's/Armani//g'

答案3

猫没有意义,所以可以走了。标识符不在您的示例输入中,因此我们假设您的意思是 blabla。您删除用户姓氏的请求似乎与您的示例命令完全无关,所以让我们更改它

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

如果这不能满足您的要求,您应该重写您的问题,使其清晰。

相关内容