我有一个平面文件,如下所示.如何使用UNIX shell脚本从文件中删除页眉和页脚并重写相同的文件.
9 20050427 HEADER RECORD 0000000 00000 000000000 123456 00 654321 DATARECORD 0000000 00000 000000000 123456 00 654321 DATARECORD 0000000 00000 000000000 123456 00 654321 DATARECORD 0000000 00000 000000000 123456 00 654321 DATARECORD 6 20050427 TRAILER RECORD
谢谢,阿伦
......并且sed
:
正如@Baramin所说:输入的数量最少sed '1d;$d'
,这是它的工作原理:
sed -i'' -e '1d' -e '$d' yourfile
1d
删除第一行$d
删除最后一行.
sed -r -i -e '/^[0-9] [0-9]{8} HEADER RECORD$/d' \ -e '/^[0-9] [0-9]{8} TRAILER RECORD$/d' yourfile
-r
需要使用{8}
延长的正则表达式.
如果你是超级迂腐,并希望以最流行的方式掩盖你的屁股:
sed -r -i.bak -e '1{/^[0-9] [0-9]{8} HEADER RECORD$/d}' \ -e '${/^[0-9] [0-9]{8} TRAILER RECORD$/d}' yourfile
该-i''
会改变yourfile
原地.如果要将输出存储在另一个文件中(例如,> outputfile
在行的末尾),请将其删除.
tail -n +2 filename | head -n -1
没有我的unix盒子进行测试,所以这些数字可能是1或2,我不记得他们是机器人1,2还是什么,但我一直都是这个(我只是在运行之前就开始了cmd,看它的1或2 ...... tail ...
应该删除第一行,head ...
应该删除最后一行