Bash截断

时间:2012-02-28 05:11:02

标签: bash shell unix

我必须对文档进行更改,其中有两列用制表符(\ t)分隔,每条记录用换行符分隔\ n。该文件的陈述如下:

  /something/random/2345.txt

我的目标是移除整个字符串,在这种情况下只保留数字2345.I used

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

但我不知道如何逃避/ cause sed语法有/也。也不是所有的记录都有相同的单词,所以我会寻找类型的正则表达式

  /*/*.*

但每个条目都有一个数字作为记录的一部分,我想提取它。 还有一些记录不包含任何数字,我想删除这些记录以及该记录的下一列中的相应条目。 该文件为CSV格式。

2 个答案:

答案 0 :(得分:2)

您可以使用反斜杠转义正斜杠,或者可以使用与正斜杠不同的字符来分隔表达式。观察:

echo foobar | sed sIfooIcrowI
> crowbar

当然,您可能不应该使用字母字符作为分隔符。我只是在这里使用它来表明几乎任何普通字符都可以代替斜杠。

答案 1 :(得分:0)

您可以从字符串中的每个语句的brining中删除所有非数字字符:

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