Как удалить слова из файла в UNIX? - PullRequest
1 голос
/ 13 октября 2010
first file of information page
name/joe/salary1    50  10  2
name/don/miles2
                   20   4   3
name/sam/lb3        0   200 50

Может кто-нибудь, пожалуйста, скажите мне, как я могу удалить все слова в файле выше, так что мой вывод будет выглядеть следующим образом

    50  10  2

    20  4   3
    0   200 50

Ответы [ 5 ]

2 голосов
/ 13 октября 2010

Используйте вместо этого awk. Следующий код говорит, чтобы пройти через каждое поле, проверить, является ли оно целым числом. Если это так, распечатайте их. Не нужно сложное регулярное выражение.

$ awk '{for(i=1;i<=NF;i++) if($i+0==$i) {printf $i" "} print ""}'  file

50 10 2

20 4 3
0 200 50
1 голос
/ 13 октября 2010

sed -e "s/[a-zA-Z/]/ /g" file

сделает это, хотя мне больше нравится codaddict, если вы хотите сохранить число и пробел. Таким образом удаляются все буквы и символ «/», заменяя их пробелами.

Если вы хотите изменить файл на месте, передайте переключатель -i. Эта команда выведет, как будет выглядеть файл.

1 голос
/ 13 октября 2010

Похоже, вы хотите сохранить только цифры и пробел. Если да, вы можете сделать:

sed 's/[^0-9 ]//g' inputFile

РЕДАКТИРОВАТЬ: Изменение требований, если цифра найдена с буквой, это следует рассматривать как часть слова.

Этот Perl-скрипт делает это:

perl -ne 's/(?:\d*[a-z\/]+\d*)*//g;print' input
0 голосов
/ 13 октября 2010

Удалять все в каждой строке до первого символа пробела (также удаляет первые пробелы):

sed 's/\S*\s*//' file
0 голосов
/ 13 октября 2010

Если ваш файл имеет такую ​​структуру, я предлагаю сначала отфильтровать первую строку, а затем удалить все символы от начала строки до первого пробела:

sed -ni '2,$s/^[^ ]*//p' file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...