sed или awk, обновите 1-й столбец данных - PullRequest
3 голосов
/ 23 августа 2010

Я читал о sed на прошлой неделе, и теперь я делаю некоторые извлечения из файла, используя sed, это нормально Теперь я хотел бы изменить данные в первом столбце на номер строки, скажем

1 3 3 0 0 0 1 3 35 34
16 3 3 0 0 0 34 35 33 19
31 3 3 0 0 0 19 33 71 68
46 3 3 0 0 0 68 71 72 69
61 3 3 0 0 0 69 72 73 70
76 3 3 0 0 0 70 73 67 53

и измените первый столбец с 1 на 6, как я могу сделать это в awk или sed? Лучший, Умут

Ответы [ 3 ]

6 голосов
/ 23 августа 2010

используйте awk

awk '$1=NR' file
1 голос
/ 24 августа 2010

Определенно awk для этого сценария. Самый простой способ сделать это с помощью sed был в следующем виде.

cat file | sed "s/^[0-9]*//g;=;" | sed -n "N;s/\n//g;p"

Где первое выражение удаляет первое число и печатает номер строки = из канала чтения.

Второе выражение sed извлекает две строки за раз и удаляет символ новой строки \n.

Этого нельзя было сделать с помощью двух последовательных выражений, поскольку команда = напрямую записывает номер строки в стандартный вывод, который не может быть записан. Поэтому мне пришлось вернуться к другому sed звонку.

0 голосов
/ 23 августа 2010

Вы можете попробовать что-то вроде этого
echo "1 3 3 0 0 0 1 3 35 34" | sed 's / ^ 1 / A / g'

Измените А на нужное вам число, и я предполагаю, что первый столбец находится в начале строки

...