Сокращение на обоих символах и поле

Существует emacs встроенное учебное руководство, доступное путем ввода Ctrl+h, thent. Это можно рассмотреть как vimtutor эквивалент.

3
02.06.2011, 14:58
3 ответа

Сокращение делает свое задание однажды. Можно прокрутить что-то cut дважды для срезания его еще больше но он кажется, что необходимо использовать что-то как awk, sed, или perl вместо этого.

Пример выполнения нескольких cuts:

cut -f 2 | cut -c 3-6

Использование в качестве примера perl это будет работать над Вашей строкой данных:

perl -pne "s/=> '([^|]+\|){3}([^|]+)/\2/g"

Вот a sed версия от Fred в комментариях:

sed -re "s/=> ([^|]*\|){3}([^|]*).*/\2/"
4
27.01.2020, 21:11
  • 1
    жаль помощник, но Ваш ответ выглядит вырезанным.. –  Ricko M 02.06.2011, 12:48
  • 2
    Ya это добралось cut :) Я случайно совершил нападки, сохраняют, в то время как я все еще тестировал код в терминале. –  Caleb 02.06.2011, 12:50
  • 3
    То же самое с помощью sed: sed -re "s/ => ([^|]*\|){3}([^|]*).*/ \2/" –  Peter.O 02.06.2011, 15:49
awk '{split($NF,x,"|"); print $1, $2, x[4]}'
4
27.01.2020, 21:11

Этот вопрос выглядит до странности знакомым , хотя я вижу, что на самом деле он возник первым.

Самый простой и понятный подход, который я вижу, - это использовать Awk следующим образом:

awk -F'|' '{print substr($0,1,19), $4}' text.txt

Это в точности эквивалент вашей попытки команды cut -c 1-19 -d '|' -f 4 , за исключением того, что это рабочий код. ;)

0
27.01.2020, 21:11

Теги

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