как удалить частичную строку из столбца 2 в файле

Измените конфигурацию nixos с помощью:

networking.extraHosts =
  ''
    127.0.0.2 other-localhost
    10.0.0.1 server
  '';
-7
14.12.2020, 12:32
3 ответа

Если вам действительно нужно то, о чем говорит ваш вопрос :«Я хочу удалить все до последнего дефиса (-)в столбце 2», вы можете использовать это:

$ awk '{sub(/.*-/,"",$2)}1' file
4857544398A7CB9C(HWTC98A7CB9C); amirzain; 129

Если вместо этого вы хотите отображать выходные данные, что означает удаление всего до последнего дефиса в столбце 2, изменение amirzainна Amirzainи замену точки с запятой на двоеточие, вы можете использовать это вместо этого:

$ perl -lne '@F=split(/; /); $F[1] =~s/^.+-(.)/\U$1/; print join ",",@F' file
4857544398A7CB9C(HWTC98A7CB9C),Amirzain,129
1
18.03.2021, 22:43

Предполагая, что заглавная Aво втором столбце является случайностью, а ,вместо ;в выводе преднамеренно:

echo '4857544398A7CB9C(HWTC98A7CB9C); AHH-ABN-19-2-59-0720000000-amirzain; 129'|sed -r 's/^([^;]+);.*-([^;]+); (.*)/\1,\2,\3/' 
4857544398A7CB9C(HWTC98A7CB9C),amirzain,129

Если вы хотите использовать это для всего файла, добавьте iк флагам для sed:

sed -ri 's/^([^;]+);.*-([^;]+); (.*)/\1,\2,\3/' file
0
18.03.2021, 22:43

Использование awk:

awk 'BEGIN{FS=";";OFS=","}{n=split($2, seq, "-");$2=seq[n];print}' <file>

ВЫХОД:

4857544398A7CB9C(HWTC98A7CB9C),amirzain, 129
1
18.03.2021, 22:43

Теги

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