Команда, которая удаляет данные слева от ";" (точка с запятой) в каждой строке

Вы неправильно читаете вывод :строки о /procявляются сообщениями об ошибках, потому что duне может прочитать некоторые файлы, findзапрашивает их использование; они не указывают, что файлы в /procвходят в первую -десятку самых больших файлов в вашей системе. В любом случае, как упомянул стив , /proc— это собственная виртуальная файловая система, которая не занимает места на вашем диске.

Чтобы избежать перечисления ненужных файлов, вы можете указать findне пересекать границы файловой системы, используя параметр -xdev.

Файлы, которые, по-видимому, доставляют вам проблемы, это /var/log/awslogs.logи/var/log/awslogs.1:ваша первая команда перечисляет их как два самых больших файла в вашей системе, и они не отображаются в выводе вашей второй команды (вернее, они меньше — я вижу awslogs.log.1дальше по списку ).

0
19.10.2019, 14:12
8 ответов

С GNUsed:

sed -E 's/^.*;(.*)/\1/' file

С GNUgrep:

grep -Po '(?!.*;).*' file 
6
28.01.2020, 02:13

Для этого предназначена команда cut.

cut -d';' -f2-
35
28.01.2020, 02:13

Другой sedвариант:

sed 's/^[^;]*;//' file

Замените любые не -символы точки с запятой([^;]*)в начале строки (первой ^), за которой следует точка с запятой, пустой строкой.

15
28.01.2020, 02:13
< inputfile egrep ';' | cut -f 2 -d ';'

-Эта команда и вы получите это!

6
28.01.2020, 02:13

Вawk:

awk 'BEGIN { FS = ";" } ; { print $2 }' 

или еще проще

awk -F";" '{print $2}'

(спасибо, ilkkachu , за упрощенную версию)

9
28.01.2020, 02:13

Есть, как уже показывают существующие ответы, много способов сделать это. Вот еще один подход 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,
5
28.01.2020, 02:13

Учитывая, что это ввод Data01.txt, это можно сделать как:

awk -F";" '{ print $2 }' Data01.txt > Data01\ Ready.txt

Будет выведен файл Data01 Ready.txt.

4
28.01.2020, 02:13

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(). Оба работают нормально; Я выбрал последнее здесь.

2
28.01.2020, 02:13

Теги

Похожие вопросы