Нет, извините, но архитектура i686 только 32-битная. А amd64 - это 64-битный программный iso. Изображение не повреждено, машина просто не может его прочитать.
awk -F, '{gsub("SAMS CLUB","SAM'\''S CLUB",$3);print}' filename1 > filename2
Ты был близок --просто не хватило двух частей:
-F,
)и Поскольку скрипт awk заключен в одинарные -кавычки, один из способов сделать это — закончить текст в одинарных -кавычках, вставить одинарную (экранированную )кавычку, а затем возобновить одинарную -] цитируемый текст. Другой способ — использовать переменные :
.awk -F, -v old="SAMS CLUB" -v new="SAM'S CLUB" '{gsub(old,new,$3);print}' filename1 > filename2
Еще один способ — использовать переменную массива ENVIRON
.
old="SAMS CLUB"
new="SAM'S CLUB"
export old new
awk -F, '{gsub(ENVIRON["old"], ENVIRON["new"], $3);print}'
Еще один вариант — сохранить сценарий awk -в файл и вызвать его с помощью:
awk -F, -f awk-script-filename filename1 > filename2
Использование файла сценария позволит вам упростить цитирование:
{gsub("SAMS CLUB","SAM'S CLUB",$3);print}
Необходимо правильно установить разделитель полей (FS
). По умолчанию awk
использует любой горизонтальный пробел (s )в качестве разделителя полей, поэтому в вашем случае SAMS
становится одним полем, а CLUB
становится другим. Следовательно, {gsub("SAMS CLUB","SAM\'S CLUB",$3);print}
не работает должным образом.
Вы можете:
awk -F ', +' '{gsub("SAMS CLUB","SAM'\''S CLUB",$3); print}' OFS=", " file.txt
-F ', +'
задает FS
как запятую, за которой следует один или несколько пробелов (s ). Если вы не уверены в пробелах, вместо этого используйте класс символов [:blank:]
для представления любых горизонтальных пробелов и измените OFS
в соответствии с вашими потребностями. Пример:
% cat file.txt
column1, coluumn2, coulumn3, column4, column5
1, item1, WALMART, 2.39, 50
2, item2, TARGET, 4.99, 52
3, item3, SAMS CLUB, 8.19, 15
4, item4, KROGER, 12.49, 33
5, item6, WEGMANS, 32.69, 75
6, item6, TARGET, 12.99, 25
7, item7, SAMS CLUB, 8.19, 92
% awk -F ',[[:blank:]]+' '{gsub("SAMS CLUB","SAM'\''S CLUB",$3); print}' OFS=", " file.txt
column1, coluumn2, coulumn3, column4, column5
1, item1, WALMART, 2.39, 50
2, item2, TARGET, 4.99, 52
3, item3, SAM'S CLUB, 8.19, 15
4, item4, KROGER, 12.49, 33
5, item6, WEGMANS, 32.69, 75
6, item6, TARGET, 12.99, 25
7, item7, SAM'S CLUB, 8.19, 92
Другое короткое awk решение:
awk -F, '$3~"SAMS CLUB"{sub("S ","\047S ",$3)}1' OFS=',' filename1 > filename2