Сценарий должен читать каждый файл в пути и заменять строку в каждой отдельной строке. Как создать файл temp и mv заменить, когда я повторяю 10 файлов входных файлов diff по тому же пути Pls советыНеобходима опция командной строки для оболочки Scripting -awk
SunOS 5,10
FILES=/export/home/*.txt
for f in $FILES
do
echo "Processing $f file..."
cat $f | awk 'BEGIN {FS="|"; OFS="|"} {$8=substr($8, 1, 6)"XXXXXXXXXX\""; print}'
done
входной файл
"2013-04-30"|"X"|"0000628"|"15000231"|"1999-12-05"|"ST"|"2455525445552000"|"1111-11-11"|75.00|"XXE11111"|"224425"
"2013-04-30"|"Y"|"0000928"|"95000232"|"1999-12-05"|"VT"|"2455525445552000"|"1111-11-11"|95.00|"VVE11111"|"224425"
выходной файл
"2013-04-30"|"X"|"0000628"|"15000231"|"1999-12-05"|"ST"|"245552xxxxxxxxxx"|"1111-11-11"|75.00|"XXE11111"|"224425"
"2013-04-30"|"Y"|"0000928"|"95000232"|"1999-12-05"|"VT"|"245552xxxxxxxxxx"|"1111-11-11"|95.00|"VVE11111"|"224425"
Не знаете, как использовать этот
cat $f | awk 'BEGIN {FS="|"; OFS="|"} {$8=substr($8, 1, 6)"XXXXXXXXXX\""; print}' $f > tmp.txt && mv tmp.txt $f
Когда вы делаете 'FILES =/export/home/*. Txt', вы фактически сохраняете шаблон glob, а не список имен файлов. Лучше либо не делать этого вообще, либо использовать оболочку, где вы можете сохранить результат в виде массива. –
fedorqui-pls edit in better way Мне нужен ответ – Sen
'cat | awk ... 'может быть гораздо лучше написано как' awk ... '. –
twalberg