Мне нужна помощь в обработке сценариев оболочки. Скрипт должен прочитать каждый файл в пути и заменить строку в каждой строке.Сценарий оболочки Sed опция
Он должен прочитать каждую строку и заменить 7-ю колонку на XXXX, указанную в образце. Любая помощь в оценке.
входного файла данных
"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"|"24555XXXXXXXXXX"|"1111-11-11"|75.00|"XXE11111"|"224425"
"2013-04-30"|"Y"|"0000928"|"95000232"|"1999-12-05"|"VT"|"24555XXXXXXXXXX"|"1111-11-11"|95.00|"VVE11111"|"224425"
Script я использовал для запуска, но не редактирование входного файла
FILES=/home/auto/*.txt
for f in $FILES
do
echo "Processing $f file..."
cat $f | awk 'BEGIN {FS="|"; OFS="|"} {$7=substr($7, 1, 6)"XXXXXXXXXX\"";print}'
done
но не может редактировать выход из файла в каталог. Мне нужно использовать опцию sed -i
, но она не работает.
Я пробовал использовать скрипт на сервере ниже, но я получаю следующую ошибку.
SunOS 5.10 Generic January 2005
echo "hello"
FILES=/export/home/*.txt
for f in $FILES
do
echo "Processing $f file..."
sed -i -r 's/"([^"]{6})[^"]*"/"\1XXXXXXXXXX"/6' "$f"
done
Я получаю
sed: illegal option -- i
С помощью «sed» Solaris вам придется перенаправить вывод во временный файл, а затем скопировать или переместите временный файл поверх оригинала. Вы можете или не можете найти, что он поддерживает параметр '-r'; IIRC, это не так. В этом случае вам нужно будет использовать '\ (... \)' для группировки и '\ {n, m \}' для подсчета групп. –