sed 只打印到一行

时间:2021-04-21 14:57:07

标签: sed

当使用Sed更改此代码的信息格式时

sed -e "1,/\[option\]/i user id is:" -e '/^#/d'  -e 's/~//g' /test/data/USER.FIDS

出来的信息如下.....

user id is:
qqq TTK
user id is:
jeff    TTL RODGERS
user id is:
mark    TP4 THOMSON

我需要的是让信息看起来像下面这样......

user id is:  qqq    TTK
user id is:  jeff   TTL RODGERS
user id is:  mark   TP4 THOMSON

3 个答案:

答案 0 :(得分:3)

由于未提供示例输入,我正在创建自己的输入并仅关注需要更改的部分。使用 i 代替 s 命令,如下所示:

# 'i' command will insert content before matching lines
$ seq 5 | sed '/[135]/i user id is: '
user id is: 
1
2
user id is: 
3
4
user id is: 
5

# with 's' command, you can add content to the same line
$ seq 5 | sed '/[135]/ s/^/user id is: /'
user id is: 1
2
user id is: 3
4
user id is: 5

答案 1 :(得分:2)

如果您对 awk 没问题,您可以尝试以下操作。由于没有提供示例数据,因此已使用显示命令的显示示例输出运行并测试了该数据。

your_command | 
awk '
{
  printf("%s",$0~/^user id/?(FNR>1?ORS:"")$0 OFS:$0)
}
END{
  print ""
}
' | column -t

答案 2 :(得分:0)

看起来 /test/data/USER.FIDS 只包含名称,您可以使用

sed '/^#/d; s/^/user id is: /;s/~//g' /test/data/USER.FIDS