Выполнение iptables
команды от командной строки только изменяют под управлением конфигурацию. В зависимости от того, как Вы настраиваете iptables для сохранения конфигураций в /etc/sysconfig/iptables-config
, Ваша конфигурация могла бы все еще сохраненный в сохраненном в файле /etc/sysconfig/iptables/iptables.save
Восстановить конфигурацию, сохраненную в этом выполненном файле:
# iptables-restore /etc/sysconfig/iptables.save
Если у Вас нет сохраненной конфигурации, можно установить ВХОДНУЮ политику по умолчанию принять путем выполнения
# iptables -P INPUT ACCEPT
Вот один из способов с awk
:
$ awk -F, 'NR==1{nf=NF-1; print $0; FS=" "} \
NR>2{printf("%s%.*s%s\n",$1,nf,",,,,,,,,,,,,,,,,,",$2)}' fileA fileB
Name,Site Name,Product UPEI,Product Name,NMS Flag,Product Model, SW
ABC,,,,,,4.4
ASD,,,,,,4.3
Важнейшей частью является printf
, где мы печатаем первое и третье поля из файлаB, разделенные ,
, номер которого равен взято из первого файла как nf = NF-1
.
tail -n+2 fileB | sed -r 's/[[:space:]]+/,,,,,,/' | cat fileA - > Output
tail -n +2 fileB
записывает конец fileB, начиная со второй строки, так как мы хотим проигнорировать первую строку.
sed
, используя -r, --regexpxp-extended
(для +
мета-символ, означающий 'хотя бы одну ') заменяет первую группу интервальных символов на ожидаемое количество запятых, как в вашем примере. В конце концов
cat
соединяет fileA и данные, полученные из sed
по каналу, называемому -
, и записывает их в stdout
, который по вашему запросу перенаправляется в файл Output
.
Не будет работать, если в колонках NE_Name или SW есть пробелы.
Другой подход sed
:
$ sed 's/ */,,,,,,,/;/NE_/d' fileA fileB
Name,Site Name,Product UPEI,Product Name,NMS Flag,Product Model, SW
ABC,,,,,,,4.4
ASD,,,,,,,4.3
Первая команда sed
заменяет 3 или более пробелов на 7 запятых, а вторая удаляет все строки, соответствующие NE_
.