Перенести определенное поле в каждую строку

файл:

DocumentNameA varying number of words symbols etc
DocumentName2 varying number of words symbols etc
AnotherDocumentName varying number of words symbols etc

Я хочу сделать что-то вроде

sed -i 's/$1/"<opentag>"$1"</closetag>"/' file

Чтобы изменить файл на

<opentag>DocumentNameA</closetag> varying number of words symbols etc
<opentag>DocumentName2</closetag> varying number of words symbols etc
<opentag>AnotherDocumentName</closetag> varying number of words symbols etc

Кажется, должен быть простой способ сделать это, но я его еще не нашел

0
задан 12 November 2020 в 18:27

2 ответа

Вы можете приблизиться к предложенному синтаксису с помощью awk - либо

awk '{$1 = "<opentag>" $1 "</closetag>"} 1' file

, либо

awk '{$1 = sprintf("<opentag>%s</closetag>", $1)} 1' file

GNU awk имеет -i inplace , эквивалент sed -i , например:

gawk -i inplace '{$1 = "<opentag>" $1 "</closetag>"} 1' file
1
ответ дан 3 January 2021 в 22:49

Вы можете использовать \ 1 для ссылки на соответствующие подвыражения в регулярном выражении:

 sed -Ei 's:^([^ ]+):"<opentag>\1</closetag>":' file
1
ответ дан 3 January 2021 в 22:49

Другие вопросы по тегам:

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