如何在第一行和最后一行的末尾添加双引号 [英] How to add the double quote at the very first and at the end of last line

查看:77
本文介绍了如何在第一行和最后一行的末尾添加双引号的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我希望在文件的第一行和最后一行的末尾添加双引号.

I am looking to add double quote at the very first line and at the of the last line in a file.

我下面有一些数据,它们仅提取80%或高于 80%

I have below data which is just fetching the data which is 80 or more than 80%

# ssh udcl804 aggr show -root false | awk '/^udc/{if($4 >= 80) print $0}'
udc8003_ssd02 127.2TB 10.09TB  92% online     179 udc8003          raid_dp,
udc8004_ssd02 127.2TB 18.95TB  85% online     149 udc8004          raid_dp,
udc8013_sata02 160.1TB 16.30TB 90% online     325 udc8013          raid_dp,
udc8014_sata02 160.1TB 22.18TB 86% online     328 udc8014          raid_dp,
udc8015_sata02 160.1TB 18.32TB 89% online     316 udc8015          raid_dp,
udc8016_sata02 160.1TB 23.97TB 85% online     316 udc8016          raid_dp,
udc8017_ssd02 131.6TB 25.79TB  80% online     101 udc8017          raid_dp,
udc8018_ssd02 131.6TB 22.30TB  83% online      83 udc8018          raid_dp,
udc8020_sata02 199.4TB 17.46TB 91% online     117 udc8020          raid_dp,
udc8026_ssd02 130.4TB 21.32TB  84% online     104 udc8026          raid_dp,
udc8030_ssd02 130.9TB 18.48TB  86% online     129 udc8030          raid_dp,

我的试用版:

我在下面尝试过,但这仅在每行的开头添加了双引号.

I tried below but this adds double quote at the beggining of each line only.

# ssh udcl804 aggr show -root false | awk '/^udc/{if($4 >= 80) print $0}' | sed 's/^/"/;s/$/"/;'
"udc8003_ssd02 127.2TB 10.11TB  92% online     179 udc8003          raid_dp,
"udc8004_ssd02 127.2TB 18.96TB  85% online     149 udc8004          raid_dp,
"udc8013_sata02 160.1TB 16.30TB 90% online     325 udc8013          raid_dp,
"udc8014_sata02 160.1TB 22.18TB 86% online     328 udc8014          raid_dp,
"udc8015_sata02 160.1TB 18.33TB 89% online     316 udc8015          raid_dp,
"udc8016_sata02 160.1TB 23.97TB 85% online     316 udc8016          raid_dp,
"udc8017_ssd02 131.6TB 25.79TB  80% online     101 udc8017          raid_dp,
"udc8018_ssd02 131.6TB 22.30TB  83% online      83 udc8018          raid_dp,
"udc8020_sata02 199.4TB 17.46TB 91% online     117 udc8020          raid_dp,
"udc8026_ssd02 130.4TB 21.32TB  84% online     104 udc8026          raid_dp,
"udc8030_ssd02 130.9TB 18.48TB  86% online     129 udc8030          raid_dp,

我需要数据来喜欢"..所有行" ,但在将它们作为json发布时,需要将每行分隔为新行.

I need the data to like " .. all lines" but each needs be separated as a new line while POSTING them as a json.

我只是在寻找是否可以通过用换行符 \ n 分隔所有行来将所有行合并为一,这是目标格式所必需的.

I am just looking if we could all the lines into one by separating them by newline character \n as this is required for the destination format.

"udc8003_ssd02 127.2TB 10.09TB  92% online     179 udc8003          raid_dp,\nudc8004_ssd02 127.2TB 18.95TB  85% online     149 udc8004          raid_dp,\nudc8013_sata02 160.1TB 16.30TB 90% online     325 udc8013          raid_dp,\nudc8014_sata02 160.1TB 22.18TB 86% online     328 udc8014          raid_dp,\nudc8015_sata02 160.1TB 18.32TB 89% online     316 udc8015          raid_dp,\nudc8016_sata02 160.1TB 23.97TB 85% online     316 udc8016          raid_dp,\nudc8017_ssd02 131.6TB 25.79TB  80% online     101 udc8017          raid_dp,\nudc8018_ssd02 131.6TB 22.30TB  83% online      83 udc8018          raid_dp,\nudc8020_sata02 199.4TB 17.46TB 91% online     117 udc8020          raid_dp,\udc8026_ssd02 130.4TB 21.32TB  84% online     104 udc8026          raid_dp,\nudc8030_ssd02 130.9TB 18.48TB  86% online     129 udc8030         raid_dp,"

推荐答案

您可以使用以下单个awk来完成工作:

You may use this single awk to get the job done:

ssh udcl804 aggr show -root false |
awk '/^udc/ && $4 >= 80 {sub(/\r$/, ""); s = (s == "" ? "" : s "\\n") $0} END {printf "\"%s\"\n", s}'

"udc8003_ssd02 127.2TB 10.09TB  92% online     179 udc8003          raid_dp,\nudc8004_ssd02 127.2TB 18.95TB  85% online     149 udc8004          raid_dp,\nudc8013_sata02 160.1TB 16.30TB 90% online     325 udc8013          raid_dp,\nudc8014_sata02 160.1TB 22.18TB 86% online     328 udc8014          raid_dp,\nudc8015_sata02 160.1TB 18.32TB 89% online     316 udc8015          raid_dp,\nudc8016_sata02 160.1TB 23.97TB 85% online     316 udc8016          raid_dp,\nudc8017_ssd02 131.6TB 25.79TB  80% online     101 udc8017          raid_dp,\nudc8018_ssd02 131.6TB 22.30TB  83% online      83 udc8018          raid_dp,\nudc8020_sata02 199.4TB 17.46TB 91% online     117 udc8020          raid_dp,\nudc8026_ssd02 130.4TB 21.32TB  84% online     104 udc8026          raid_dp,\nudc8030_ssd02 130.9TB 18.48TB  86% online     129 udc8030          raid_dp,"

说明:

  • /^ udc/&&$ 4> = 80 :仅针对这两个条件
  • {sub(/\ r $/,"); :从所有行中删除尾随的 \ r
  • s =(s =="?":s" \\ n)$ 0 :继续将每一行保存在变量 s 中使用 \ n 作为行定界符
  • END {printf"\"%s \"\ n",s} :打印缓冲区,两侧均带有".
  • /^udc/ && $4 >= 80: For these 2 conditions only
  • {sub(/\r$/, "");: Remove trailing \r from all lines
  • s = (s == "" ? "" : s "\\n") $0: Keep saving each line in variable s with \n as line delimiter
  • END {printf "\"%s\"\n", s}: Print buffer with " on both sides.

这篇关于如何在第一行和最后一行的末尾添加双引号的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆