Поскольку файлы с отметкой даты будут собраны вместе в порядке глобусов оболочки (, например. *.txt
), вы можете использовать массивы (, например, в bash):
n=2 ## how many of each you want to keep
txtfiles=(*.txt)
auxfiles=(*.txt_aux)
totaltxt=${#txtfiles[@]}
totalaux=${#auxfiles[@]}
movetxt=$((totaltxt-n))
moveaux=$((totalaux-n))
echo mv "${txtfiles[@]:0:movetxt}" /dir/aux2/
echo mv "${auxfiles[@]:0:moveaux}" /dir/aux2/
Удалите две последние echo
части, когда все будет выглядеть правильно.
Может что-то вроде поможет:
awk '/(MCLK)/ {print $1,$2}' input_file
Попробуйте это,
sed '/(MCLK)/ s/(MCLK)//g;s/\t//' test.txt
800 MHz
/(MCLK)/
будет искать ключевое слово. s/(MCLK)//g
удалит (MCLK)
. s/\t//
удаляет вкладку. вы можете использовать опцию -i
для встроенного редактирования.
На ваш отредактированный вопрос
awk -F '[$\t ]' '/(MCLK)/ {print $2" "$3}' test.txt
800 MHz
xargs
берет свои входные данные и превращает их в аргументы данной команды. grep
возвращает интересующую вас строку, а xargs
добавляет эту строку в качестве аргумента к команде sed
, которая вместо этого ожидает имя файла. Вам вообще не нужен xargs
.
Вы можете указать sed
действовать только на той строке, которая соответствует шаблону:
sed -i~ -e '/(MCLK)/{s/\t//g' -e 's/(MCLK)//g}' ~/test.txt
Пробовал с помощью приведенной ниже команды, тоже работает нормально
команда
sed -n '/MCLK/p' filename| sed -r "s/^\s+//g"| sed -r "s/\(MCLK\)//g"
выход
sed -n '/MCLK/p' filename| sed -r "s/^\s+//g"| sed -r "s/\(MCLK\)//g"
800 MHz