从字符串中删除第一个字符

时间:2014-02-20 14:24:12

标签: shell

我有一个文件名abc.TXT。该文件的内容是

./pub/index.html
./manifest.bak
./manifest.rel
./ns/GSCT_ASNShipmentInfo_E1/node.idf
./ns/GSCT_ASNShipmentInfo_E1/E1/svcUpdateVR01ForOP/flow.xml.bak
./ns/GSCT_ASNShipmentInfo_E1/E1/svcUpdateVR01ForOP/node.ndf
./ns/GSCT_ASNShipmentInfo_E1/E1/svcUpdateVR01ForOP/flow.xml

我想从每行中删除。(点)并将内容保存到新文件bcd.TXT。 bcd.TXT中的内容应为

  /pub/index.html
  /manifest.bak
  /manifest.rel
  /ns/GSCT_ASNShipmentInfo_E1/node.idf
  /ns/GSCT_ASNShipmentInfo_E1/E1/svcUpdateVR01ForOP/flow.xml.bak
  /ns/GSCT_ASNShipmentInfo_E1/E1/svcUpdateVR01ForOP/node.ndf
  /ns/GSCT_ASNShipmentInfo_E1/E1/svcUpdateVR01ForOP/flow.xml

4 个答案:

答案 0 :(得分:1)

使用sed

$ sed 's/.//' abc.TXT > bcd.TXT
$ cat bcd.TXT
/pub/index.html
/manifest.bak
/manifest.rel
/ns/GSCT_ASNShipmentInfo_E1/node.idf
/ns/GSCT_ASNShipmentInfo_E1/E1/svcUpdateVR01ForOP/flow.xml.bak
/ns/GSCT_ASNShipmentInfo_E1/E1/svcUpdateVR01ForOP/node.ndf
/ns/GSCT_ASNShipmentInfo_E1/E1/svcUpdateVR01ForOP/flow.xml

sed s/.//每行替换一个字符。也就是说,它删除了第一个字符。

答案 1 :(得分:1)

fedorqui的回答将删除任何第一个字符。因此,如果您不确定它是否为.,那么只有当您看到sed

时才能告诉我.

使用:

sed 's/^\.//' abc.TXT > bcd.TXT

告诉sed如果我的文件的第一个字符(用^表示)是文字.(用\.表示),则将其替换为空。

如果要在现有文件中进行更改,可以使用-i选项。这将在您的文件中进行更改。

答案 2 :(得分:0)

使用awk

awk '{sub(/^\./,X)}1' abc.TXT > bcd.TXT

答案 3 :(得分:0)

使用perl:

perl -pe 's/\.//' abc.TXT > bcd.TXT

就地替换:

perl -pi -e 's/\.//' abc.TXT