55 lines
No EOL
2.9 KiB
Markdown
55 lines
No EOL
2.9 KiB
Markdown
# Plan to Remove Markdown Tables After First Header in Specified .md Files
|
|
|
|
## Goal
|
|
Remove the markdown table that appears after the first markdown header (## X.Y Title) in 35 specific .md files located in the directory `/Users/rico/src/iso27diy-corp/Corpus/Standards/ISO27x/OST/27002/EN`. These files contain ISO 27002 control descriptions and have a summary table listing Control type, Information security properties, etc., which needs to be removed.
|
|
|
|
## Analysis
|
|
- **Affected Files**: Identified 35 .md files containing the table starting with `| Control type | Information security properties | Cybersecurity concepts | Operational capabilities | Security domains |`.
|
|
- **Table Structure**: The table consists of 2-4 lines:
|
|
- Header row starting with `| Control type`
|
|
- Separator row
|
|
- Data row
|
|
- Optionally, an empty row
|
|
- **Location**: The table appears immediately after the first `##` header (e.g., `## 8.1 User endpoint devices`) and before the `**Control**` section.
|
|
- **Pattern**: All affected files follow the pattern where the table ends just before `**Control**`.
|
|
|
|
## Approach
|
|
Use a Bash script with `sed` to remove the table lines from each affected file. The `sed` command will delete lines from the start of the table (`| Control type`) up to but not including `**Control**`.
|
|
|
|
### Script
|
|
Create and run the following Bash script in the target directory:
|
|
|
|
```bash
|
|
#!/bin/bash
|
|
|
|
# Change to the target directory
|
|
cd /Users/rico/src/iso27diy-corp/Corpus/Standards/ISO27x/OST/27002/EN || exit 1
|
|
|
|
# Loop through all .md files
|
|
for file in *.md; do
|
|
# Check if the file contains the table
|
|
if grep -q "| Control type" "$file"; then
|
|
# Remove the table lines: from "| Control type" to just before "**Control**"
|
|
sed -i '/^| Control type /,/^\*\*Control$/ { /^\*\*Control$/ !d }' "$file"
|
|
echo "Processed $file"
|
|
fi
|
|
done
|
|
|
|
echo "Table removal complete."
|
|
```
|
|
|
|
### Steps to Execute
|
|
1. **Navigate to Directory**: Change to `/Users/rico/src/iso27diy-corp/Corpus/Standards/ISO27x/OST/27002/EN`.
|
|
2. **Backup (Optional)**: Consider backing up the directory before running the script.
|
|
3. **Run Script**: Execute the script to process all files.
|
|
4. **Verify**: After running, check a few files (e.g., `a-8.1-User-endpoint-devices.md`, `a-5.15-Access-control.md`) to ensure the table is removed and the `**Control**` section remains intact.
|
|
|
|
## Risks and Considerations
|
|
- **Accuracy**: The `sed` command is designed to precisely target the table based on the observed patterns. If any file has unexpected formatting, manual review may be needed.
|
|
- **No Impact on Non-Affected Files**: Files without the table will remain unchanged.
|
|
- **Reversibility**: If needed, restore from backup or use version control (assuming the directory is in a git repo).
|
|
|
|
## Expected Outcome
|
|
- Tables removed from 35 files.
|
|
- Content before and after the table (including `**Control**` and subsequent sections) preserved.
|
|
- No changes to other .md files in the directory. |