Как я могу получить отдельный список специальных символов из файла, используя GREP или SED? - PullRequest
0 голосов
/ 24 февраля 2012

У меня есть файл, который содержит около 30000 записей, разделенных '|'.Мне нужно получить отдельный список специальных символов только из файла.

Например: 123 | fasdf |% df & | pap, came |!234 |% ^ & asdf | 34 | '": |

Мой вывод должен быть: |% &,! ^'":

Любая помощь будет принята с благодарностью.Спасибо, Велрай.

Ответы [ 2 ]

4 голосов
/ 24 февраля 2012
grep -o '[|%&,!^":]' input | sort -u

Вы должны перечислить все свои специальные символы в скобках.

Это вернет каждого уникального специального символа в отдельной строке. Если вам действительно нужна строка с этими символами, вы должны впоследствии удалить символы новой строки, например ::10000

grep -o '[|%&,!^":]' input | sort -u | tr -d '\n'

UPDATE:

Если вам нужно удалить все символы, которые не входят в набор «a-zA-Z0-9», вы можете использовать этот:

grep -o '[^a-zA-Z0-9]' input | sort -u | tr -d '\n'
0 голосов
/ 24 февраля 2012
 echo "123|fasdf|%df&|pap,came|! 234|%^&asdf|34|'\":|" \
 | { tr -d '[[:alnum:]]'; printf "\n"; } \
 | sed 's/\(.\)/\1_/g' \
 | awk -v 'RS=_' '{print $0}' \
 | sort -u \
 | awk '{printf $0}END{printf "\n"}'

выход

!"%&',:^||

Вы можете заменить первую строку echo .... на cat fileName

...