sed
은 사용자 쉘 외부의 바이너리 유틸리티입니다. 이
$ which sed
/usr/bin/sed
귀하의 명시된 목표는 특수 문자가 세트에없는 그 어떤이다 sed
및/또는 grep
를 사용하여 텍스트 파일에서 "특별한"모든 문자를 얻는 것입니다 함께 어디 있는지 볼 수 있습니다 az, AZ 또는 0-9. sed
를 사용하면 가장 쉬운 방법입니다 :
$ sed -e 's/[a-zA-Z0-9]//g' file
이 빈 문자가 아닌 모든 특수 문자가 효과적으로 파일에서 제거을 대체합니다.입력으로 /etc/passwd
사용 예는 다음과 유사한 출력 뭔가됩니다
$ grep -o '[^a-zA-Z0-9]' /etc/passwd
과 유사한 출력하지만, 각각의 일치를 생성합니다 :
$ sed -e 's/[a-zA-Z0-9]//g' /etc/passwd
:::::/://
:::::/://
:::::/://
::::://://
:::::///://
:::::/://
:::::/://
:::::/://
:::::///://
:::::/://
::::://://
:::: ://://
:::::/://
:::::///://
-:::: :/://
-:::: :/://
-:::: :/://
--:::: :/://
grep
위해 당신은 일치하는 값 출력에 -o
옵션을 사용할 수 있습니다 문자가 새 줄에 나타납니다.
또 다른 옵션은 tr
입니다 : 이전 sed
명령과 동일한 출력을 생성
$ tr -d '[:alnum:]' </etc/passwd
. 이 같은 명령의 표준 출력 캡처 할 수있는 세 가지 경우 모두
: 또한 따옴표를 다시 사용
$ specials=$(tr -d '[:alnum:]' </etc/passwd)
$ echo $specials
:::::/:// :::::/:// :::::/:// ::::://:// :::::///:// :::::/:// :::::/:// :::::/:// :::::///:// :::::/:// ::::://:// :::: ://:// :::::/:// :::::///:// -:::: :/:// -:::: :/:// -:::: :/:// --:::: :/:// :::: :/:// :::: :/:// :::: :///:// :::: :///:// ::::://:// :::: ://:// :::::/:// :::: :///:// :::::///:// :::: /- :///-:// :::::///:// :::: :///:// :::: :/:// :::::///:// ::::://:// -:::: :/:// :::: :/:// :::: ://:// :::: :/:// :::: :///:// :::: :///:// --::::://--/:// -:::: :/:// ::::- :///:// :::: ://:// :::::/:// ::::://:// ::::://:// :::: ://:// :::: :///:// :::: :///:// :::: :///://
작동 :
$ specials=`tr -d '[:alnum:]' </etc/passwd`
는 HTTP에서 더 자세히 설명 인용 : //stackoverflow.com/questions/10067266/when-to-wrap-quotes-around-a-variable – tripleee