首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >UNIX Shell脚本从文件中删除一列

UNIX Shell脚本从文件中删除一列
EN

Stack Overflow用户
提问于 2012-07-06 22:14:55
回答 8查看 6.1K关注 0票数 0

我有一个如下所示的文件:

代码语言:javascript
运行
复制
Header1:value1|value2|value3|
Header2:value4|value5|value6|

列号未知,我有一个函数可以返回列号。

我想写一个脚本,可以从文件中删除一列。例如,删除第1列后,我将获得:

代码语言:javascript
运行
复制
Header1:value2|value3|
Header2:value5|value6|

我使用cut来实现这一点,到目前为止,我可以在删除一列之后给出值,但不需要标题。例如

代码语言:javascript
运行
复制
value2|value3|
value5|value6|

有没有人能告诉我怎样才能重新添加标题?或者任何命令都可以直接做到这一点?谢谢。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2012-07-06 22:24:13

将冒号替换为管道,执行cut命令,然后再次将第一个管道替换为冒号:

代码语言:javascript
运行
复制
sed 's/:/|/' input.txt | cut ... | sed 's/|/:/'

您可能需要调整cut命令的列数,以确保不计算标题。

票数 2
EN

Stack Overflow用户

发布于 2012-07-06 22:23:36

将“:”改为“|”,这样标题就是另一个字段,而不是第一个字段的一部分。您可以在最初生成数据的任何方式中执行此操作,也可以在cut之前通过tr ':' '|'传递数据。您的其余字段将被+1偏移,但这应该很容易补偿。

票数 1
EN

Stack Overflow用户

发布于 2012-07-06 22:25:09

你的问题是HeaderX后面跟着'‘,这不是你在cut中使用的'|’分隔符。

您可以使用:将行分成两部分,类似于"cut delimiter 1 --delimiter=:YOURFILE",然后删除第一列,然后放回标题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11363940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档