Я хотел бы удалить первые X-символы и последние символы Y из всех четных строк файла с помощью bash.bash-trimming четные строки в txt-файле
Входной сигнал:
1
AABBBBBCCC
2
GKDDABC
Пусть X = 2 и Y = 3:
1
BBBBB
2
DD
Я хотел бы удалить первые X-символы и последние символы Y из всех четных строк файла с помощью bash.bash-trimming четные строки в txt-файле
Входной сигнал:
1
AABBBBBCCC
2
GKDDABC
Пусть X = 2 и Y = 3:
1
BBBBB
2
DD
Использование awk
:
$ awk -v x=2 -v y=3 '0==NR%2 {$0=substr($0,x+1,length($0)-y-x)} 1' file
1
BBBBB
2
DD
Как это работает:
-v x=2 -v y=3
В -v
параметры определяют наши две переменные, x
и y
.
0==NR%2 {$0=substr($0,x+1,length($0)-y-x)}
NR это счетчик линии. Когда 0 == NR%2
, мы находимся на четной линии, и мы удаляем x
символов с самого начала и y
с конца. В awk
, $0
- вся строка. Мы заменяем подстрокой, которая начинается в позиции x+1
и имеет длину length($0)-y-x
.
1
Это загадочное сокращение для печати линии.
Gnu СЭД имеет оператор адреса ~
шаг. 2~2
означает «начать в строке 2, соответствовать каждой второй строке».
x=2
y=3
sed "2~2{s/^.\{$x\}//;s/.\{$y\}$//}" input
perl -pE '$_=substr($_,'$x',-'$y')."\n" unless $. %2'
Это может работать для вас (GNU СЭД):
sed -r 'n;s/^.{2}(.*).{3}$/\1/' file
или если вы хотите параметризовать:
x=2 y=3
sed -r "n;s/^.{$x}(.*).{$y}$/\1/" file
Где n
печатает нечетные строки рисования в четных линий команда подстановки.