我在使用bash
外殼。如何使用文件替代斜線的sed
我有一個文件的文件列表:
cat filelist
../1.txt
../2.txt
...
../100.txt
我想刪除「../」,我試圖$ cat filelist | sed s/..\///
,但它給出了一個錯誤信息。我如何刪除斜槓?
我在使用bash
外殼。如何使用文件替代斜線的sed
我有一個文件的文件列表:
cat filelist
../1.txt
../2.txt
...
../100.txt
我想刪除「../」,我試圖$ cat filelist | sed s/..\///
,但它給出了一個錯誤信息。我如何刪除斜槓?
您需要報價:所以你要逃避它太
sed 's/..\///'
.
指任何字符:
sed 's/\.\.\///'
和可讀性,您可以使用另一個字符分隔符:
sed 's|\.\./||'
也許'^'他的請求缺少(我猜)在OP失敗sed – NeronLeVelu
@NeronLeVelu:顯然不是。主要問題是bash解釋這些反斜槓 - 將被調用的命令改爲「sed s /..///' - 這是不正確的。 –
評論的目的不是錯誤本身,但事實上,OP似乎刪除相對於當前批處理文件夾引用的uppter文件夾,而不是包含'../'的路徑(所以使用*也許*和+1) – NeronLeVelu
您需要周圍的sed
參數報價和還需要包括g
全局標誌。它也沒有必要先cat
文件。你也應該逃過這段時間。
用途:
sed 's/\.\.\///g' filelist
給出:
1.txt
2.txt
...
100.txt
'g'不需要。 – 123
除去起始../
(我猜它的目的,但不指定)
sed 's#^\.\./##' filelist
#
意味着/
允許readible /
在路徑^
限制起始路徑不改變像bad/../folder
。如果不是想要的行爲,只要刪除這個插入符號。
你會想逃離'.'s。 – Biffen