2012-02-28 61 views
0

我必須對文件進行更改,其中有兩列由選項卡(\ t)分隔,每條記錄由換行符分隔\ n。是該文件的語句如下:Bash截斷

/something/random/2345.txt 

我的目標是刪除整個字符串,然後不停在這case.I數2345使用

sed 's/something/random//g' file.csv 

,但我不知道該怎麼轉義/導致sed語法有/也。也並非所有記錄都具有相同的話,所以我要尋找的類型

/*/*.* 

的正則表達式,但每個項目有一個號碼作爲記錄的一部分,我想提取。 此外還有一些不包含任何數字的記錄,我想刪除這些記錄以及該記錄的下一列中的相應條目。 該文件是CSV格式。

+0

你的正則表達式是奇怪的,你的意思是作爲通配符? 'sed -n'%^/[^ /] */\([^ /。] * \)\。[^ /] * $%\ 1%p'file.csv'可能會做什麼。雖然這需要與您的實際示例不同數量的斜線。 – tripleee 2012-02-28 05:37:09

+0

請發佈您的CSV文件的幾行完成 – kev 2012-02-28 05:49:04

回答

2

您可以使用反斜槓轉義正斜槓,也可以使用與正斜槓不同的字符來分隔表達式。觀察:

echo foobar | sed sIfooIcrowI 
> crowbar 

當然,您可能不應該使用字母字符作爲分隔符。我只是在這裏使用它來指出幾乎任何正常字符都可以代替斜線。

+0

使用字母很少是一個好主意,雖然( - : – tripleee 2012-02-28 05:34:14

+0

@tripleee是的,我應該提到這一點;) – 2012-02-28 05:37:58

0

你可以只在字符串中每個語句的鹽漬刪除所有非數字字符:

sed 's/[^0-9]*\(.*\)[\t]*/\1/g'