공백을 제거한 후의 문자열 파일

공백을 제거한 후의 문자열 파일

다음과 같이 여러 개의 로그 파일을 생성했습니다.

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

이것이 귀하의 요구 사항을 충족하지 않는 경우 명확하게 하기 위해 질문을 다시 작성해야 합니다.

관련 정보