2014-10-03 2 views
0

У меня есть список строк, какAppend характер в зависимости от длины

50000 
12345 
2345 
12341 
3456 

Я хочу, чтобы добавить символ 0 в начале до линий, имеющих только 4 символов, так что получается нечто вроде этого

50000 
12345 
02345 
12341 
03456 

Как я могу сделать это эффективно. Не просите меня использовать петлю. Есть что-нибудь, используя awk.

+0

Обратите внимание, что добавление от 0 до 2345 даст 23450. Кажется, вы хотите префикс или префикс 0 для получения 02345. –

+0

Через 'sub',' awk 'length ($ 0) == 4 {sub (/^/, " 0 ")} 1 'файл' –

ответ

3

Вы можете использовать функцию length()awk.

$ awk 'length($0)==4{$0=0 $0}1' file 
50000 
12345 
02345 
12341 
03456 

Мы используем шаблон length($0)==4, чтобы проверить, если строка длиной 4 символа. Если мы добавим 0 перед ним. 1 позволяет нам печатать строки, которые не соответствуют нашим критериям, как есть.

4

Заманчиво предположить:

awk '{printf "%05d\n", $1}' file 

Это печатает первое поле файла как нули 5-значное число. Он будет обрабатывать входы, такие как 1, 23, 456, а также 2345 (производя 00001, 00023, 00456, 02345). Однако он предполагает, что входы представляют собой все числа; он не будет работать так хорошо, если это алфавитно-цифровые строки, например.

Смежные вопросы