Используйте тильду ~
перед путем:
rm -rf ~/path/to/file
или
rmdir ~/path/to/file
вы можете удалить каталог из любого места, конечно, в пределах вашего пользовательского пути и с правильными разрешениями.
GNUawkподход:
awk 'BEGIN{ max=0 }
/^List/{ if(k && k>max) { max=k; idx=c } ++c; k=0 }
NF{ a[c][++k]=$0 }
END{
for(i=1;i<=max;i++)
for(j=1;j<=c;j++) printf "%s%s",a[j][i],(j==c)?ORS:"\t"
}' file | column -ts$'\t'
Выход:
List A List B List C
hi Hi Hello
hello Yes
hw r u
Вы можете использовать awk
для разделения каждого блока на отдельные файлы, а затем paste
их вместе (ниже предполагается, что между каждым списком всегда есть пустые строки ).
awk '/^$/ {N++;next}{print >"file"N}' infile.txt
paste file*
Также вы можете переместить команду paste
в awk
.
awk '/^$/ {N++;next}{print >"file"N} END{system("paste file*")}' inile.txt
Выходной сигнал:
List A List B List C
hi Hi Hello
hello Yes
hw r u
чтобы получить красивый отступ при изменении длины строк, как показано ниже:
list A
hi
hello
hw r u
List B
Hi this is list B
Yes
List C
Hello, this is list C
вы можете сделатьpaste file* |column -s $'\t' -tn
и получите результат:
list A List B List C
hi Hi this is list B Hello, this is list C
hello Yes
hw r u
Помимо моего предыдущего ответа , существует также команда csplit
, чтобы разбить файл таким же образом, а затем использовать команду paste
для получения желаемого результата.
csplit -zs -f outputfile inputfile '/^List/' '{*}'
paste outfile*
'/^List/'
— это шаблон для сопоставления и разбиения файла на следующий новый файл '{*}'
повторить шаблон столько раз, сколько возможно -z
используется для удаления пустых выходных файлов;и -s
используется, чтобы не печатать подсчет размеров выходных файлов -f
используется для определения пользовательского префикса выходного файла ##, где ##
по умолчанию 2 цифры, вы можете определить его с помощью-n N
(N — количество цифр в суффиксе после определенного префикса)Команда
for i in "List A" "List B" "List C"; do sed -n "/$i/,/^$/p" h.txt >"$i.txt"; done
paste List\ *
выход
List A List B List C
hi Hi Hello
hello Yes
hw r u