请帮我在一行中替换多个文本文件中的路径。
假设我的文本文件中有 /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'
希望能帮助到你。