Вы неправильно читаете вывод :строки о /proc
являются сообщениями об ошибках, потому что du
не может прочитать некоторые файлы, find
запрашивает их использование; они не указывают, что файлы в /proc
входят в первую -десятку самых больших файлов в вашей системе. В любом случае, как упомянул стив , /proc
— это собственная виртуальная файловая система, которая не занимает места на вашем диске.
Чтобы избежать перечисления ненужных файлов, вы можете указать find
не пересекать границы файловой системы, используя параметр -xdev
.
Файлы, которые, по-видимому, доставляют вам проблемы, это /var/log/awslogs.log
и/var/log/awslogs.1
:ваша первая команда перечисляет их как два самых больших файла в вашей системе, и они не отображаются в выводе вашей второй команды (вернее, они меньше — я вижу awslogs.log.1
дальше по списку ).
С GNUsed
:
sed -E 's/^.*;(.*)/\1/' file
С GNUgrep
:
grep -Po '(?!.*;).*' file
Другой sed
вариант:
sed 's/^[^;]*;//' file
Замените любые не -символы точки с запятой([^;]*
)в начале строки (первой ^
), за которой следует точка с запятой, пустой строкой.
< inputfile egrep ';' | cut -f 2 -d ';'
-Эта команда и вы получите это!
Есть, как уже показывают существующие ответы, много способов сделать это. Вот еще один подход GNU grep
:
$ grep -oP ';\K.*' file
1563101282.M178569P409830.de122.abteilung.com,S=1258,W=1287:2,
1563102004.M49870P436474.de122.abteilung.com,S=1258,W=1287:2,
1563102961.M195946P457876.de122.abteilung.com,S=1258,W=1287:2,
1563103921.M334168P463856.de122.abteilung.com,S=1258,W=1287:2,
1563104883.M883187P502037.de122.abteilung.com,S=1258,W=1287:2,
1563105603.M799240P519637.de122.abteilung.com,S=1258,W=1287:2,
1563106561.M419884P547969.de122.abteilung.com,S=1258,W=1287:2,
1563107524.M145768P582635.de122.abteilung.com,S=1258,W=1287:2,
1563108483.M632493P607265.de122.abteilung.com,S=1258,W=1287:2,
1563109203.M675460P633790.de122.abteilung.com,S=1258,W=1287:2,
1563110163.M299406P663234.de122.abteilung.com,S=1258,W=1287:2,
1563111121.M682713P685072.de122.abteilung.com,S=1258,W=1287:2,
-o
заставляет grep печатать только совпадающую часть строки, а -P
включает Perl-совместимые регулярные выражения. PCRE имеет \K
, что означает «игнорировать все, что совпадало ранее». Собрав все это вместе, команда найдет первое ;
, отбросит его и затем напечатает оставшуюся часть строки.
Другой вариант — использовать perl в режиме awk -(-a
):
$ perl -F';' -lane 'print $F[1]' file
1563101282.M178569P409830.de122.abteilung.com,S=1258,W=1287:2,
1563102004.M49870P436474.de122.abteilung.com,S=1258,W=1287:2,
1563102961.M195946P457876.de122.abteilung.com,S=1258,W=1287:2,
1563103921.M334168P463856.de122.abteilung.com,S=1258,W=1287:2,
1563104883.M883187P502037.de122.abteilung.com,S=1258,W=1287:2,
1563105603.M799240P519637.de122.abteilung.com,S=1258,W=1287:2,
1563106561.M419884P547969.de122.abteilung.com,S=1258,W=1287:2,
1563107524.M145768P582635.de122.abteilung.com,S=1258,W=1287:2,
1563108483.M632493P607265.de122.abteilung.com,S=1258,W=1287:2,
1563109203.M675460P633790.de122.abteilung.com,S=1258,W=1287:2,
1563110163.M299406P663234.de122.abteilung.com,S=1258,W=1287:2,
1563111121.M682713P685072.de122.abteilung.com,S=1258,W=1287:2,
Или используйте perl, например sed, и удалите все до первого;
:
$ perl -pe 's/.*?;//' file
1563101282.M178569P409830.de122.abteilung.com,S=1258,W=1287:2,
1563102004.M49870P436474.de122.abteilung.com,S=1258,W=1287:2,
1563102961.M195946P457876.de122.abteilung.com,S=1258,W=1287:2,
1563103921.M334168P463856.de122.abteilung.com,S=1258,W=1287:2,
1563104883.M883187P502037.de122.abteilung.com,S=1258,W=1287:2,
1563105603.M799240P519637.de122.abteilung.com,S=1258,W=1287:2,
1563106561.M419884P547969.de122.abteilung.com,S=1258,W=1287:2,
1563107524.M145768P582635.de122.abteilung.com,S=1258,W=1287:2,
1563108483.M632493P607265.de122.abteilung.com,S=1258,W=1287:2,
1563109203.M675460P633790.de122.abteilung.com,S=1258,W=1287:2,
1563110163.M299406P663234.de122.abteilung.com,S=1258,W=1287:2,
1563111121.M682713P685072.de122.abteilung.com,S=1258,W=1287:2,
Учитывая, что это ввод Data01.txt
, это можно сделать как:
awk -F";" '{ print $2 }' Data01.txt > Data01\ Ready.txt
Будет выведен файл Data01 Ready.txt
.
Python для развлечения, прямо сейчас.
python -c "import sys; [print(line.strip().split(';')[1]) for line in sys.stdin]" < input_file.txt
1563101282.M178569P409830.de122.abteilung.com,S=1258,W=1287:2,
1563102004.M49870P436474.de122.abteilung.com,S=1258,W=1287:2,
1563102961.M195946P457876.de122.abteilung.com,S=1258,W=1287:2,
1563103921.M334168P463856.de122.abteilung.com,S=1258,W=1287:2,
1563104883.M883187P502037.de122.abteilung.com,S=1258,W=1287:2,
1563105603.M799240P519637.de122.abteilung.com,S=1258,W=1287:2,
1563106561.M419884P547969.de122.abteilung.com,S=1258,W=1287:2,
1563107524.M145768P582635.de122.abteilung.com,S=1258,W=1287:2,
1563108483.M632493P607265.de122.abteilung.com,S=1258,W=1287:2,
1563109203.M675460P633790.de122.abteilung.com,S=1258,W=1287:2,
1563110163.M299406P663234.de122.abteilung.com,S=1258,W=1287:2,
1563111121.M682713P685072.de122.abteilung.com,S=1258,W=1287:2,
Поскольку print
добавляет новую строку, вы должны либо удалить ее с помощью end=''
, либо удалить новую строку из файла с помощью .strip()
. Оба работают нормально; Я выбрал последнее здесь.