shell:如何从第二列中删除前n个字段

时间:2017-07-11 07:19:52

标签: bash shell

请帮助从下面的文件中删除第2列(分隔符空间)中的前9个字段。我尝试使用cut& awk但没有满足所需的输出。

我的输入文件

 appu 11062017-10:00
 ammu 11062017-11:00
 anna 11062017-12:00

所需的输出..

appu 10:00
ammu 11:00
anna 12:00

请注意,字段11062017-(日期)将不相同,但数字长度(9个字符)将相同。 请帮帮我。

5 个答案:

答案 0 :(得分:2)

使用awk和sub$2的9个第一个字符替换为空字符串:

$ awk '{sub(/.{9}/,"",$2)}1' file
appu 10:00
ammu 11:00
anna 12:00

答案 1 :(得分:1)

根据@ anubhava的评论。它可以通过带有substr。

的awk实现
awk -F  " " '{print $1,substr($2,10)}' my_input_file.txt

答案 2 :(得分:1)

备用awk解决方案

awk '{ split($2,arry,"-");print $1" "arry[2] }' filename

这里我们使用“ - ”分隔符来获得我们需要的数据

答案 3 :(得分:0)

尝试使用

sed -i 's/\ .*-/\ /g' file

sed删除空格-

之间的所有字符

答案 4 :(得分:0)

sed

的另一种方式
's/\([[:digit:]]\{8\}\-\)//' filename
  • 正则表达式[[:digit:]]{8}-将匹配8位数字后跟连字符。