Файл фиксированной длины заменяется на sed или awk

Не удается добавить комментарий.

Попробуйте использовать arandr, это всего лишь графический интерфейс, но он может быть очень полезен. Также когда у меня была похожая проблема на ноутбуке ubuntu xrandr guide помог мне.

1
11.06.2019, 05:47
2 ответа

И awk-решение

awk 'BEGIN{FS=OFS=""}{f=0;for(i=407;i<=415;i++){if($i!~/0-9/){f=1}};if(f){for(i=407;i<=415;i++){$i=0}};print }' fixed

Мы определяем разделитель полей как пустой, каждый символ является полем. Затем мы устанавливаем флаг fдля каждой записи равным 0 (предполагаем числовое ). Мы сравниваем символы 407 -415 с /0 -9/. Если какие-либо не совпадают, мы устанавливаем f равным 1. Затем, если f=1, мы заменяем все 9 символов на 0 и печатаем строку.

0
28.01.2020, 00:10

Поскольку эти другие ответы кажутся мне сложными, вот один простой sedодин -лайнер:

sed -E '/^.{406}[0-9]{9}/!s/(.{406}).{9}/\1000000000/'

Расширенная (опция-E)регулярное выражение ^.{406}[0-9]{9}соответствует строкам (Я предполагаю, что одна запись — это одна строка, в противном случае добавьте опцию -zв GNU sed), которая начинается(^)с 406 случайные символы (.{406}), за которыми следуют девять числовых символов, таким образом, от 407 до 415 все цифры, поэтому для обратного совпадения(!)первые 406 символов остаются(\1в замене обозначают первую ()часть )и следующие девять символов заменяются нулями.

Обратите внимание, что поскольку вы запрашиваете обработку текста, это обработка текста, а не обработка байтов. Мульти -Байтовые символы считаются как один символ, а не как два байта

0
28.01.2020, 00:10

Теги

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