我有一个标签分隔的文件,我想重新格式化它和删除原始,所有的一行。
它是一个由制表符分隔的文件,例如:
删除给定列(即第3列),在中间添加另一个id列(即第1和第2列),其中每一行都是id (例如,row1为id1,row2为id2等),然后在后面添加另一列,以文本(即每行为hello的文本)。
所有更改在一行中,最后删除原始文件,新文件与原文件相同。
示例:
fnamein.txt
rogelio\tdelgado\t3453434\tlas encinas\n
mario\tmoreno\t4563432\tcasinos\n
etc...fname.out
rogelio\tid1\tdelgado\t3453434\tlas encinas\taddress\n
mario\tid2\tmoreno\t4563432\tcasinos\taddress\n
etc...(如您所见,我在末尾添加了id列btw col和2,并添加了address列(总是相同的单词))。
我只是想知道在linux中是否有一种简单的方法可以做到这一点,我对linux命令的强大功能很陌生。
谢谢!
发布于 2012-10-13 01:38:42
另一种方法是使用awk。
awk -F'\t' '{print $1, $2, $3}' filename其中-F是字段分隔符。awk会将文件分隔到相应的字段中,您所需要做的就是打印这些字段。$1是第一个字段等等,跳过一个字段,忽略它。
awk '{print $1, $3}' filename将只打印第一个和第三个字段。
发布于 2012-10-13 01:37:41
单程:
perl -i -pwe 's/^([^\t*])\t([^\t*])\t[^\t*]\t(.*)/$1\tid$.\t$2\t$3\taddress/;' FILENAME发布于 2012-10-13 02:52:58
统一规则的回答帮助我回答了整个问题:
开始{OFS = FS} {id++}{print $1,"id"id,$2,$3,$4,"address"}‘filein.txt > test.tmp & mv test.tmp filein.txt。
这些答案完全符合我最初的打算。
谢谢大家的帮助。
https://stackoverflow.com/questions/12869010
复制相似问题