我有一个如下所示的文件:
Header1:value1|value2|value3|
Header2:value4|value5|value6|列号未知,我有一个函数可以返回列号。
我想写一个脚本,可以从文件中删除一列。例如,删除第1列后,我将获得:
Header1:value2|value3|
Header2:value5|value6|我使用cut来实现这一点,到目前为止,我可以在删除一列之后给出值,但不需要标题。例如
value2|value3|
value5|value6|有没有人能告诉我怎样才能重新添加标题?或者任何命令都可以直接做到这一点?谢谢。
发布于 2012-07-06 22:24:13
将冒号替换为管道,执行cut命令,然后再次将第一个管道替换为冒号:
sed 's/:/|/' input.txt | cut ... | sed 's/|/:/'您可能需要调整cut命令的列数,以确保不计算标题。
发布于 2012-07-06 22:23:36
将“:”改为“|”,这样标题就是另一个字段,而不是第一个字段的一部分。您可以在最初生成数据的任何方式中执行此操作,也可以在cut之前通过tr ':' '|'传递数据。您的其余字段将被+1偏移,但这应该很容易补偿。
发布于 2012-07-06 22:25:09
你的问题是HeaderX后面跟着'‘,这不是你在cut中使用的'|’分隔符。
您可以使用:将行分成两部分,类似于"cut delimiter 1 --delimiter=:YOURFILE",然后删除第一列,然后放回标题。
https://stackoverflow.com/questions/11363940
复制相似问题