awk '
{
getline a <file2
if(prn)
print a
else
print
}
/formant \[1\]/{
prn = 1
}
/bandwidth/{
prn = 0
}
' file1
Для разного количества формант в файлах file1 и file2, чтобы получить только частоту:
awk '
BEGIN{
pattern = "formant \\[1\\]"
}
prn{
prn = 0
while($0 !~ pattern)
getline <file2
getline <file2
}
$0 ~ pattern{
prn = 1
}
1
' file1
Использование sed
sed -i -e 's/\*.*//g' -e 's/ IP//g' -e '\$^Syntax.*$d' File*
Это тоже должно работать:
awk '/Date/{print $0} /^Product|^Soft/{print $1" "$2" "$3} /^$/' File*
Вот один из способов awk
. Переменная NR
представляет номер записи; просто распечатайте его, если он первый. awk
считает поля от одного, поэтому вы говорите, что после этого вам нужны только первые три:
awk 'NR==1 {print;next};{print $1,$2,$3}'
Использование sed
для удаления последнего слова и любых пробелов или знаков табуляции перед ним в строках 5 и далее:
$ sed -E '5,$s/[[:blank:]]*[^[:blank:]]+$//' file
Date Time: June 22 12:40:00
Product User Host IP
Software User User
Software1 User User
5,$
обращается к каждой строке, начиная со строки 5 и далее, и замена, которая действует в этих строках, удалит любое количество пробелов или табуляции, за которыми следует что-то, что состоит из не -пробелов и не -табуляции. в конце строки.