替换 Linux 中许多文本文件中的路径

替换 Linux 中许多文本文件中的路径

请帮我在一行中替换多个文本文件中的路径。

假设我的文本文件中有 /home/shyam/Raghav/2014/12_dec/31122014/,我想将其替换为/home/shyam/Raghav/12_dec/31122014,我该怎么做?

答案1

在 shell 中

cat original_file_prefix.* | sed 's/[" ]//g' > new_file_name

或者在 vim 中打开文件并输入以下内容(不过你必须在所有文件上运行它)

:%s/[" ]//g

这样就可以去掉引号和空格。

答案2

尝试用这个命令:

sed -i 's/\/home\/shyam\/Raghav\/2014\/12_dec\/31122014\//\/home\/shyam\/Raghav\/12_dec\/31122014/g' files*

-i选项就地编辑文件。

files*用您想要的搜索模式替换。

请注意,按照您的建议将其替换/home/shyam/Raghav/2014/12_dec/31122014//home/shyam/Raghav/12_dec/31122014。结果没有 final /。如果需要,请在命令末尾将其替换/g为。\//g

答案3

sed -i 's:/home/shyam/Raghav/2014/12_dec/31122014/:/home/shyam/Raghav/12_dec/31122014:g' files*.txt

答案4

要更改多个文本文件中的所有路径,我建议在分割窗口中打开所有这些文件。即
“vim -o [file1] [file2] [file3] ...”
现在您将看到所有文件都在单独的 ViM 缓冲区中打开。现在,要替换所有缓冲区中所需的文本,您可以发出:
“:windo %s/[SEARCH_PATTERN]/[REPLACE_PATTERN]/g”
这将在所有缓冲区中发出文本替换命令。

您的命令应该是::
windo %s/\/home\/shyam\/Raghav\/2014\/12_dec\/31122014\//\/home\/shyam\/Raghav\/12_dec\/31122014'

希望能帮助到你。

相关内容