Удаление столбца в файле, разделенном полями, с помощью сценария

Если вы положите / в конце образца подстановки, шаблон будет соответствовать каталогам и символическим ссылкам на каталоги. Следует следующий фрагмент считает каталоги и символические ссылки в текущем каталоге.

set -- */ .*/
if ! [ -e "$1" ]; then shift; fi # handle the case when */ matches nothing
echo $(($# - 2)) # -2 for . and ..

В Bash вы можете упростить это на

shopt -s dotglob nullglob
dirs=(*/)
echo ${#dirs[@]}

, если вы не хотите включить каталоги, используйте Найти . Если ни один из каталогов не имеет имя, которое содержит новую строку, вы можете подсчитать строки:

find . -name . -o -type d -print -prune | wc -l

, чтобы быть полностью простым, вместо этого подсчитываться.

find . -name . -o -type d -print -prune | tr -dc / | wc -c
-2
10.06.2015, 14:14
3 ответа
cut -d'|' -f1-3 myfile

Это будет более простое решение. Работает отлично!

1
28.01.2020, 05:15

Используя OFS и FS ( Вывод) Разделитель полей, просто распечатайте первые 3 столбца

$ awk  'BEGIN{OFS=FS="|"}{print $1,$2,$3}' file.txt
Hello|how|are
Lilly|jasmine|rose

Используя sed, оставьте только первые два « | [все, что не |] »:

~$ sed 's/\(\(|[^|]*\)\{2\}\).*/\1/' file.txt
Hello|how|are
Lilly|jasmine|rose
1
28.01.2020, 05:15

В awk достаточно сделать:

awk 'BEGIN{FS=OFS="|"}; NF=3' myfile.txt

(Если у вас 17 столбцов, как указано в каком-то комментарии, просто измените 3 на 17 .)

1
28.01.2020, 05:15

Теги

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