Один вкладыш Linux / Bash для печати сложного оператора

Вы можете использовать UNetbootin для linux или, если у вас есть ПК с Ubuntu, вы можете использовать USB Startup Disk Creator инструмент.

-1
17.09.2018, 15:56
4 ответа

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

awk 'NF{print "--This is " $1 " and his \047roll number\047 is " $2 }' file

\047— восьмеричный код одинарной кавычки '.

Другой альтернативой является определение переменной, содержащей символ одинарной кавычки.:

awk -v sq="'" 'NF{print "--This is " $1 " and his "sq"roll number"sq" is " $2 }' file
5
28.01.2020, 05:06

Простой whileконтур:

while read -r name roll; do if [[ -z "$name" ]]; then echo ; else echo "--This is $name and his 'roll number' is $roll"; fi; done < infile
--This is kevin and his 'roll number' is n1

--This is edwin and his 'roll number' is n2

--This is mevin and his 'roll number' is n3

Это решение сохраняет пустые строки, как кажется, пожелания OP.

infileвыглядит так, как показано ниже:

cat infile 
kevin n1

edwin n2

mevin n3

Это лишено обработки ошибок и др., и, конечно, зависит от формата файла, указанного OP.

2
28.01.2020, 05:06

Проблема не в awk, а в том, как оболочка обрабатывает (одинарные кавычки в данном случае ).
Существует несколько альтернатив оболочки:

$ awk $'NF{print "--This is " $1 " and his \'roll number\' is " $2 }' <infile
$ awk  'NF{print "--This is " $1 " and his '\''roll number'\'' is " $2 }' <infile
$ awk  'NF{print "--This is " $1 " and his \047roll number\047 is " $2 }' <infile
$ awk  'NF{print "--This is " $1 " and his " q "roll number" q " is " $2 }' q=\' <infile
$ awk -vq=\' 'NF{print "--This is " $1 " and his " q "roll number" q " is " $2 }' <infile

Будет напечатано все:

--This is kevin and his 'roll number' is n1
--This is edwin and his 'roll number' is n2
--This is mevin and his 'roll number' is n3
0
28.01.2020, 05:06

перламутровый -вкладыш:

perl -ane '@F && printf "--This is %s and his '\''roll number'\'' is %s\n", @F' file
0
28.01.2020, 05:06

Теги

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