Распространение специального файла в файле

[F1]
4
задан 2 May 2017 в 16:42

10 ответов

Используйте sed:

sed "s/.*/'&','&'/" filename

s/foo/bar заменяет foo на bar. .* соответствует всей строке, & в разделе замены вставляет все совпадение.

9
ответ дан 22 May 2018 в 23:00
  • 1
    ничего не делать ! В моем файле не будет изменений. Что делать ? – Avani badheka 2 May 2017 в 15:40
  • 2
    Вы имеете в виду, что вывод команды - это только файл? Сложно поверить. Или вы хотите изменить файл напрямую? В этом случае добавьте опцию -i в свой GNU sed, чтобы отредактировать файл на месте. – Philippos 2 May 2017 в 15:45
  • 3
    -i работает как магия. Спасибо @philippos. – Avani badheka 2 May 2017 в 15:52
  • 4
    также вы можете предложить, как избежать новой линии? Я хочу, чтобы и слово со специальным символом в одной строке. – Avani badheka 2 May 2017 в 16:04
  • 5
    Какая новая линия? У меня нет новых строк. – Philippos 2 May 2017 в 16:07

Используйте sed:

sed "s/.*/'&','&'/" filename

s/foo/bar заменяет foo на bar. .* соответствует всей строке, & в разделе замены вставляет все совпадение.

9
ответ дан 18 July 2018 в 13:57

Используйте sed:

sed "s/.*/'&','&'/" filename

s/foo/bar заменяет foo на bar. .* соответствует всей строке, & в разделе замены вставляет все совпадение.

9
ответ дан 24 July 2018 в 20:17

Используйте sed:

sed "s/.*/'&','&'/" filename

s/foo/bar заменяет foo на bar. .* соответствует всей строке, & в разделе замены вставляет все совпадение.

9
ответ дан 24 July 2018 в 20:17

Используйте sed:

sed "s/.*/'&','&'/" filename

s/foo/bar заменяет foo на bar. .* соответствует всей строке, & в разделе замены вставляет все совпадение.

9
ответ дан 31 July 2018 в 12:44

У вас уже есть ответ sed. Вот несколько альтернатив:

awk: установка одиночной кавычки как переменной q (для читаемости) и out в качестве записи, окруженной одинарными кавычками, затем печать out с желаемым форматированием:

awk -v q="'" '{out=q$0q; print out","out}'

bash: чтение каждой строки, настройка переменной out, чтобы содержать линию, окруженную одинарными кавычками, и, наконец, печать в желаемом формате:

while IFS= read -r line; do out="'$line'"; printf '%s,%s\n' "$out" "$out"; done

python: чтение каждой строки и печать в нужном формате с использованием функции print():

#!/usr/bin/env python3
with open('file.txt') as f:
    for line in f:
        line = line.rstrip()
            print("'{}','{}'".format(line, line))

perl: Замена каждой строки (.*) с правильным форматированием, $& в замене означает согласованную часть, в этом случае всю строку:

perl -pe "s/.*/'$&','$&'/" 

Пример:

% cat file.txt 
abc
xyz
pqr
mno

% awk -v q="'" '{out=q$0q; print out","out}' file.txt
'abc','abc'
'xyz','xyz'
'pqr','pqr'
'mno','mno'

% while IFS= read -r line; do out="'$line'"; printf '%s,%s\n' "$out" "$out"; done <file.txt
'abc','abc'
'xyz','xyz'
'pqr','pqr'
'mno','mno'

% perl -pe "s/.*/'$&','$&'/" file.txt
'abc','abc'
'xyz','xyz'
'pqr','pqr'
'mno','mno'
2
ответ дан 22 May 2018 в 23:00

У вас уже есть ответ sed. Вот несколько альтернатив:

awk: установка одиночной кавычки как переменной q (для читаемости) и out в качестве записи, окруженной одинарными кавычками, затем печать out с желаемым форматированием:

awk -v q="'" '{out=q$0q; print out","out}'

bash: чтение каждой строки, настройка переменной out, чтобы содержать линию, окруженную одинарными кавычками, и, наконец, печать в желаемом формате:

while IFS= read -r line; do out="'$line'"; printf '%s,%s\n' "$out" "$out"; done

python: чтение каждой строки и печать в нужном формате с использованием функции print():

#!/usr/bin/env python3 with open('file.txt') as f: for line in f: line = line.rstrip() print("'{}','{}'".format(line, line))

perl: Замена каждой строки (.*) с правильным форматированием, $& в замене означает согласованную часть, в этом случае всю строку:

perl -pe "s/.*/'$&','$&'/"

Пример:

% cat file.txt abc xyz pqr mno % awk -v q="'" '{out=q$0q; print out","out}' file.txt 'abc','abc' 'xyz','xyz' 'pqr','pqr' 'mno','mno' % while IFS= read -r line; do out="'$line'"; printf '%s,%s\n' "$out" "$out"; done <file.txt 'abc','abc' 'xyz','xyz' 'pqr','pqr' 'mno','mno' % perl -pe "s/.*/'$&','$&'/" file.txt 'abc','abc' 'xyz','xyz' 'pqr','pqr' 'mno','mno'
2
ответ дан 18 July 2018 в 13:57

У вас уже есть ответ sed. Вот несколько альтернатив:

awk: установка одиночной кавычки как переменной q (для читаемости) и out в качестве записи, окруженной одинарными кавычками, затем печать out с желаемым форматированием:

awk -v q="'" '{out=q$0q; print out","out}'

bash: чтение каждой строки, настройка переменной out, чтобы содержать линию, окруженную одинарными кавычками, и, наконец, печать в желаемом формате:

while IFS= read -r line; do out="'$line'"; printf '%s,%s\n' "$out" "$out"; done

python: чтение каждой строки и печать в нужном формате с использованием функции print():

#!/usr/bin/env python3 with open('file.txt') as f: for line in f: line = line.rstrip() print("'{}','{}'".format(line, line))

perl: Замена каждой строки (.*) с правильным форматированием, $& в замене означает согласованную часть, в этом случае всю строку:

perl -pe "s/.*/'$&','$&'/"

Пример:

% cat file.txt abc xyz pqr mno % awk -v q="'" '{out=q$0q; print out","out}' file.txt 'abc','abc' 'xyz','xyz' 'pqr','pqr' 'mno','mno' % while IFS= read -r line; do out="'$line'"; printf '%s,%s\n' "$out" "$out"; done <file.txt 'abc','abc' 'xyz','xyz' 'pqr','pqr' 'mno','mno' % perl -pe "s/.*/'$&','$&'/" file.txt 'abc','abc' 'xyz','xyz' 'pqr','pqr' 'mno','mno'
2
ответ дан 24 July 2018 в 20:17

У вас уже есть ответ sed. Вот несколько альтернатив:

awk: установка одиночной кавычки как переменной q (для читаемости) и out в качестве записи, окруженной одинарными кавычками, затем печать out с желаемым форматированием:

awk -v q="'" '{out=q$0q; print out","out}'

bash: чтение каждой строки, настройка переменной out, чтобы содержать линию, окруженную одинарными кавычками, и, наконец, печать в желаемом формате:

while IFS= read -r line; do out="'$line'"; printf '%s,%s\n' "$out" "$out"; done

python: чтение каждой строки и печать в нужном формате с использованием функции print():

#!/usr/bin/env python3 with open('file.txt') as f: for line in f: line = line.rstrip() print("'{}','{}'".format(line, line))

perl: Замена каждой строки (.*) с правильным форматированием, $& в замене означает согласованную часть, в этом случае всю строку:

perl -pe "s/.*/'$&','$&'/"

Пример:

% cat file.txt abc xyz pqr mno % awk -v q="'" '{out=q$0q; print out","out}' file.txt 'abc','abc' 'xyz','xyz' 'pqr','pqr' 'mno','mno' % while IFS= read -r line; do out="'$line'"; printf '%s,%s\n' "$out" "$out"; done <file.txt 'abc','abc' 'xyz','xyz' 'pqr','pqr' 'mno','mno' % perl -pe "s/.*/'$&','$&'/" file.txt 'abc','abc' 'xyz','xyz' 'pqr','pqr' 'mno','mno'
2
ответ дан 24 July 2018 в 20:17

У вас уже есть ответ sed. Вот несколько альтернатив:

awk: установка одиночной кавычки как переменной q (для читаемости) и out в качестве записи, окруженной одинарными кавычками, затем печать out с желаемым форматированием:

awk -v q="'" '{out=q$0q; print out","out}'

bash: чтение каждой строки, настройка переменной out, чтобы содержать линию, окруженную одинарными кавычками, и, наконец, печать в желаемом формате:

while IFS= read -r line; do out="'$line'"; printf '%s,%s\n' "$out" "$out"; done

python: чтение каждой строки и печать в нужном формате с использованием функции print():

#!/usr/bin/env python3 with open('file.txt') as f: for line in f: line = line.rstrip() print("'{}','{}'".format(line, line))

perl: Замена каждой строки (.*) с правильным форматированием, $& в замене означает согласованную часть, в этом случае всю строку:

perl -pe "s/.*/'$&','$&'/"

Пример:

% cat file.txt abc xyz pqr mno % awk -v q="'" '{out=q$0q; print out","out}' file.txt 'abc','abc' 'xyz','xyz' 'pqr','pqr' 'mno','mno' % while IFS= read -r line; do out="'$line'"; printf '%s,%s\n' "$out" "$out"; done <file.txt 'abc','abc' 'xyz','xyz' 'pqr','pqr' 'mno','mno' % perl -pe "s/.*/'$&','$&'/" file.txt 'abc','abc' 'xyz','xyz' 'pqr','pqr' 'mno','mno'
2
ответ дан 31 July 2018 в 12:44

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

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