хочу сделать команду LS для поиска только файла

Я сделал это с помощью awk, grep и sed. Предполагая, что в исходном файле нет конечных пробелов.

awk 'NR>1&&/>/{print ""}{printf " %s", $0}END{print ""}' file |grep chr|sed 's/^ //' |sed 's/^.*chr/>chr/' |awk 'BEGIN{OFS="\n";}{print $1,$2,$3,$4}'

Во-первых, сгруппируйте начальные строки с помощью '>' и предваряйте каждое поле пробелом

 >text chr1 AAA BBA AAA
 >additional text chr2 ABA AAA CCC TTT
 >some text chr3 TTT CCC TCT
 >no good text 1 3 AAA CCC TCT
 >unimportant text 2 3 3 ACC CCC TCT

Во-вторых, отфильтруйте все строки, содержащие подстроку "chr"

 >text chr1 AAA BBA AAA
 >additional text chr2 ABA AAA CCC TTT
 >some text chr3 TTT CCC TCT

в-третьих, удалить все начальные пробелы

>text chr1 AAA BBA AAA
>additional text chr2 ABA AAA CCC TTT
>some text chr3 TTT CCC TCT

в-четвертых, удалить все символы между ">" и "chr"

>chr1 AAA BBA AAA
>chr2 ABA AAA CCC TTT
>chr3 TTT CCC TCT

и, наконец, используйте awk для печати всех строк с "\n" в качестве разделителя выходного файла

>chr1
AAA
BBA
AAA
>chr2
ABA
AAA
CCC
>chr3
TTT
CCC
TCT
0
08.02.2021, 12:52
2 ответа

Если вы хотите вывести список всех файлов, имя которых начинается с t_test_и имеет номер, вы можете использовать:

ls t_test_[0-9]*

[0-9]— это класс символов, который соответствует любому числу, а *означает «один или несколько раз».

0
18.03.2021, 22:31

Рассматривали ли вы возможность использования команды |grepдля помощи вашему ls?

Например:

ls |grep t_test_type_yyyyymmdd.csv

grep— очень мощный инструмент для такого рода проверок; больше информации о команде grepздесь :https://www.redhat.com/sysadmin/how-to-use-grep.

-2
18.03.2021, 22:31

Теги

Похожие вопросы