scp
более просто использовать, поскольку требуется меньше аргументов. Я ловлю myselv, использующий scp вместо rsync
если я только передаю единственный файл. Propably я только к ленивому для определения псевдонима к rsync... ;-)
Учитывая новое лучшее описание проблемы, это на самом деле легче
#!/bin/bash
awk 'BEGIN {
SETNR=0;
MODE="Non-Fields"}
(MODE=="Fields") && (! /START-OF-/ ) && (! /END-OF/ ) {
print;
COUNT++
}
/START-OF-FIELDS/ {
COUNT=0;
SETNR++;
MODE="Fields"
}
/END-OF/ {
if (MODE=="Fields") {
printf ("Count for data set %d is: %d\n", SETNR, COUNT)
};
MODE="Non-Fields"
}' $*
Ваша проблема должна быть лучше определена, но рассмотрение Вашего демонстрационного входа, я высказываю предположение относительно того, что Вы хотите сделать. Используйте маленький сценарий AWK как это:
#!/bin/bash
awk '! /START-OF-/ {
if (MODE=="DEFINE") { HEADER=HEADER $0 "|" }
else if ((MODE=="DATA") && (NF>0)) { print }
}
/START-OF-FIELDS/ { MODE="DEFINE"; HEADER="" }
/START-OF-DATA/ {
print HEADER
MODE="DATA"
HEADER=""
}' | sed 's/|$//'
Это производит:
ID|NAME|DEPT
1|joy|cs
2|sam|ec
ID |NAME|DOB|DEPT|ADDRESS
5|joe|13/2/2001/|ee|street1
3|gwen|4/08/1999|cs|street2
Примечание: Я ленив, таким образом, я добавляю вертикальную панель после каждого поля в заголовке. Затем я использую команду SED для удаления запаздывающих V-панелей впоследствии.
sed -n '/^START-OF-DATA$/,/^$/{/^START-OF-DATA$/d;/^$/d;p;}' filename
Это:
START-OF-DATA
и следующая пустая строка - /^START-OF-DATA$/,/^$/
. С теми строками: /^START-OF-DATA$/d
и /^$/d
p