Вопрос Как использовать вырез, чтобы сделать вкладку разделителем?


Я работаю с командой egrep, и мне нужно соединить команду cut (и ONLY cut), чтобы изменить «:» на вкладку. Например, изменение:

Blahblahblah:2000

чтобы:

Blahblahblah    2000

В настоящее время у меня есть это, но он превращает «:» в «/ t», а не в tab:

egrep -e "^[0-9]" *.txt | cut -d ":" --output-delimiter="/t" -f 1- > test.txt

2
2018-02-12 09:19


происхождения




ответы:


Использовать это:

egrep -e "^[0-9]" *.txt | cut -d ":" --output-delimiter=$'\t' -f 1- > test.txt

должен работать в Баше.


3
2018-02-12 09:20



Отлично! Спасибо. Я проверил man-страницу для разреза, и я не видел нигде, объяснял, что такое «$». Не могли бы вы объяснить мне это немного? - gbrooks
@gbrooks: На самом деле это не «вырезано», это Bash. Bash расширяет обратные слэши в строках типа $'..' и только такие строки. '\ t' - стандартный escape для вкладки. - kiri
Хорошо, спасибо. Я только что запустил команду, заметив, что у меня есть в два раза больше строк, чем я должен был (как указано в задании). Не задумываясь, не вызывает ли это тот факт, что он использует Bash? - gbrooks
@gbrooks: Не следует создавать проблемы с помощью Bash. Однако вы можете задать новый вопрос. - kiri
Хорошо. Большое вам спасибо за вашу помощь. - gbrooks


В качестве альтернативы вы также можете использовать tr , если вам нужно просто заменить разделитель следующим образом

эхо "Blahblahblah: 2000" | tr ':' '\ t'

Вы получите следующий результат

Blahblahblah 2000

-1
2017-10-20 09:09



Из вопроса: «... отрезать (и ТОЛЬКО отрезать) команду ...» - muru