如何使用awk/sed/perl/etc将注释移动到新文件。?

如何使用awk/sed/perl/etc将注释移动到新文件。?,perl,awk,sed,extract,Perl,Awk,Sed,Extract,我想从SCSS文件中提取注释,将它们放在新的标记文件中,并从原始文件中删除注释 file.scss 问题 如何使用awk、perl、sed或其他工具来实现这一点?我自己实现了一个解决方案 #!/usr/bin/env bash # USAGE # ## Development # # # single file # bash ./scripts/extract-md.bash src/base/_typography.scss # # # all files #

我想从SCSS文件中提取注释,将它们放在新的标记文件中,并从原始文件中删除注释

file.scss 问题
如何使用
awk
perl
sed
或其他工具来实现这一点?

我自己实现了一个解决方案

#!/usr/bin/env bash
# USAGE
#   ## Development
#
#      # single file
#      bash ./scripts/extract-md.bash src/base/_typography.scss
#
#      # all files
#      bash ./scripts/extract-md.bash src/base/_typography.scss
#
#   ## production (override files)
#
#      export PRODUCTION=true
#      bash ./scripts/extract-md.bash

shopt -s globstar

start() {
  for legacy in $legacies; do
    directory="${legacy%/*}"
    filename="${legacy##*/}"

    new_filename="${filename//.scss/.md}"
    documentation="${directory}/${new_filename}"
    extract_comment "$legacy" "$documentation"

    stylesheet="${1//.scss/.new.scss}"
    extract_code "$legacy" "$stylesheet"
    [[ $PRODUCTION ]] && mv "$stylesheet" "$legacy"
  done
}

extract_comment() {
  local legacy="$1"
  local documentation="$2"
  awk '/^\/\*/{flag=1} flag; /^\s?\*\//{print;flag=0}' "$legacy" \
  | perl -p -e 's/\/[\*]+//g' \
  | perl -p -e 's/^\s*[\*]?[ \/]?//g' \
  > "$documentation"
}

extract_code() {
  local legacy="$1"
  local stylesheet="$2"
  awk 'BEGIN{flag=1}/^\/\*/{flag=0}; /^\s?\*\//{flag=1; next}flag' "$legacy" \
  > "$stylesheet"
}

legacies=${1:-src/**/*.scss}
start $legacies
# Typography

* We use
[Roboto](https://fonts.google.com/specimen/Roboto)

 Body typography:
 `p`

     @example
     p This is a paragraph with #[strong bold ]&nbsp;and#[em italic ]&nbsp;styles.</p>

  Heading 1:
 `h1` `.h1`
body {
  color: $base-font-color;
}

h1,
.h1 {
  @include h1;
}
#!/usr/bin/env bash
# USAGE
#   ## Development
#
#      # single file
#      bash ./scripts/extract-md.bash src/base/_typography.scss
#
#      # all files
#      bash ./scripts/extract-md.bash src/base/_typography.scss
#
#   ## production (override files)
#
#      export PRODUCTION=true
#      bash ./scripts/extract-md.bash

shopt -s globstar

start() {
  for legacy in $legacies; do
    directory="${legacy%/*}"
    filename="${legacy##*/}"

    new_filename="${filename//.scss/.md}"
    documentation="${directory}/${new_filename}"
    extract_comment "$legacy" "$documentation"

    stylesheet="${1//.scss/.new.scss}"
    extract_code "$legacy" "$stylesheet"
    [[ $PRODUCTION ]] && mv "$stylesheet" "$legacy"
  done
}

extract_comment() {
  local legacy="$1"
  local documentation="$2"
  awk '/^\/\*/{flag=1} flag; /^\s?\*\//{print;flag=0}' "$legacy" \
  | perl -p -e 's/\/[\*]+//g' \
  | perl -p -e 's/^\s*[\*]?[ \/]?//g' \
  > "$documentation"
}

extract_code() {
  local legacy="$1"
  local stylesheet="$2"
  awk 'BEGIN{flag=1}/^\/\*/{flag=0}; /^\s?\*\//{flag=1; next}flag' "$legacy" \
  > "$stylesheet"
}

legacies=${1:-src/**/*.scss}
start $legacies