我有一个 linux 命令输出如下所示的文件列表:
folder/folder/folder/file_1
folder_1/folder/folder/file2
我想格式化此输出以满足以下条件:
- 最后一个斜杠 (/) 始终替换为三个下划线
- 除最后一个斜杠外的所有斜杠都替换为一个下划线
- 文件夹名称中的任何下划线都替换为两个下划线
- 文件名中的任何下划线保持原样
上面看起来像:
folder_folder_folder___file_1
folder__1_folder_folder___file2
如果您也可以解释您的解决方案,那将会很有帮助。谢谢!
最佳答案
# Assume each line in a variable called $value
# Split the values up into dirname and basename
val_dir="${value%/*}"
val_base="${value##*/}"
# Replace underscores in dirname with two underscores
val_dir="${val_dir//_/__}"
# Replace slashes in dirname with single underscore
val_dir="${val_dir//\//_}"
# Re-join dirname and basename with three underscores
result="${val_dir}___${val_base}"
关于linux - 字符串操作 - 替换某些字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13629906/