Замена только на определенном столбце с использованием bash - PullRequest
0 голосов
/ 28 сентября 2019

У меня есть файл с разделителями таблиц, который выглядит следующим образом:

enter image description here

Я хочу заменить все экземпляры символа * на "" (пустой пробел) и все экземпляры / с " " (пробел) ТОЛЬКО в одном из столбцов.

Результат будет выглядеть следующим образом:

enter image description here

Каков наилучший способ сделать это?Я делаю это на очень больших файлах, и я предпочел бы заменить его на месте.

Изначально я использовал это:

sed -i 's/\// /g' test_file.txt  #this will replace / with ' ' (space)  
sed -i -e 's/\*//g' test_file.txt  # this will replace * with ''  

Но это заменило указанные шаблоны во всех столбцах файла,Мне нужно оперировать только на одном конкретном

1 Ответ

0 голосов
/ 28 сентября 2019

Вы можете сделать это легко с помощью awk.Убедитесь, что вы правильный разделитель столбцов (здесь я предполагаю,).

awk -F, -v OFS=, '{gsub(/\*/, "", $2); gsub(/\//, " ", $2)} 1' input > output

gsub заменяется глобально в указанном столбце.1 - это просто более короткий способ записи {print}.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...