Как заменить строку, если они есть в файле - PullRequest
0 голосов
/ 15 октября 2019

Я попробовал эту команду:

awk 'sub(/S/,"5")' primare.txt > primaro.txt

, но primaro.txt пусто.

S в primare.txt может отсутствовать.
Когда нет S Я хотел бы напечатать тот же файл, что и primare.txt.

РЕДАКТИРОВАТЬ

А как переставить пробелы ничем?

awk 'sub(/ /,"") 1' parametrx10.txt

awk '{sub(/ /,"");print}' parametrx10.txt

Эти удалены только один пробел: -8.3 7 6 0 4 O> -8.37 6 0 4 O

Ответы [ 3 ]

2 голосов
/ 15 октября 2019

Примерно так:

awk 'sub(/S/,"5") 1' primare.txt

Попробуйте, если все в порядке, тогда добавьте часть > primaro.txt самостоятельно.
Также, возможно, вам нужно gsub вместо sub,

Однако, я бы предложил вам использовать sed:

sed 's|S|5|' primare.txt

Использовать -i, чтобы изменить файл на месте (лучше резервное копирование в первую очередь).
Изменить наs|S|5|g заменить все вхождения.

Заменить пробелы:

awk 'gsub(/[[:space:]]+/,"") 1' primare.txt
2 голосов
/ 15 октября 2019

Не могли бы вы попробовать

awk '{sub(/[sS]/,"5")} 1' Input_file > out_file

Использовать gsub вместо сабвуфера, если вы хотите заменить все вхождения s. Также это заменит малые и заглавные буквы. Так что в случае замены заглавной буквы придерживайтесь своего шаблона.

Также в разделе комментариев удаляйте пробелы.

awk '{gsub(/ +/,"")} 1' Input_file > out_file
1 голос
/ 15 октября 2019

Вы хотите:

awk '{sub(/S/,"5");print}'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...