【问题标题】:How can I add " around each line bash [duplicate]如何在每行 bash 周围添加“ [重复]
【发布时间】:2016-10-19 12:38:28
【问题描述】:

我有一个每行一个单词的文件,我想在单词前添加 ",并在 Bash 单词后添加 ",

例子:

Hello
Sleep
Try

我想要:

"Hello",
"Sleep",
"try",

希望有人能帮助我

【问题讨论】:

  • 您想在每个单词或每一行周围添加引号和逗号吗? (也许你的情况是一样的?)
  • 每个单词都换行,所以两者都可以
  • 为什么标题说要加“.”,而问题却说要加引号和逗号?
  • 请编辑您的标题以匹配问题。
  • 围绕每个单词,还是围绕整行内容?

标签: bash


【解决方案1】:

只是为了与众不同:perl

perl -lne 'print qq{"$_",}' file

【讨论】:

    【解决方案2】:
    > echo $word
    word
    > echo "\""$word"\","
    "word",
    

    How to escape double quotes in bash?

    【讨论】:

    • 你漏掉了逗号。
    【解决方案3】:

    sed(流编辑器)是此操作的一种选择:

    sed -e 's/^/"/;s/$/",/' file
    

    正则表达式有两部分,用;隔开:

    1. s/^/"/ 表示在每一行的开头添加一个"
    2. s/$/",/ 表示在每行末尾添加一个",

    魔术是行首 (^) 和行尾 ($) 的锚点。 man page 有更多详细信息。 sed值得学习。

    【讨论】:

    • g 在这里是多余的,还是我遗漏了什么?
    • @PatrickTrentin 是的,习惯的力量。固定。
    • 另外,您可能希望将 -e 替换为 -i
    • @PatrickTrentin 当 OP 知道 sed 的运作方式时,他可以选择关闭安全装置。
    • 没关系,我有一些虚假数据。 (:
    【解决方案4】:

    假设您每行有一个单词,我将使用以下 GNU sed 命令:

    sed -i 's/.*/"\0",/' <your_file>
    

    &lt;your_file&gt; 替换为文件路径。

    解释:

    • sed 表示流编辑器;它专门用于过滤和转换文本流
    • -i 是就地选项:这意味着它将把转换的结果写入它正在处理的文件中
    • s/search/replace/sed 的搜索和替换命令:它搜索写成正则表达式的模式,并将匹配的文本替换为其他内容
    • .* 是一个正则表达式模式,它将尽可能多地匹配。由于sed是一行一行的,所以会匹配一整行
    • \0 是对整个匹配字符串的反向引用
    • "\0", 是整个匹配的字符串,用引号括起来,后跟逗号。
    • s/.*/"\0",/ 是一个 sed 搜索和替换命令,它将匹配整行并将其括在引号中,后跟逗号

    【讨论】:

      【解决方案5】:
      sed 's/.*/"&",/' file
      

      在替换的替换部分,&amp; 被替换为与原始正则表达式匹配的任何内容。 .* 匹配整行。

      【讨论】:

        【解决方案6】:

        已经回复here

        使用 awk

        awk '{ print "\""$0"\","}' inputfile
        

        使用 纯 bash

        while read FOO; do
           echo -e "\"$FOO\","
        done < inputfile
        

        inputfile 是一个包含不带引号的行的文件。

        如果您的文件有空行,awk 绝对是最佳选择:

        awk 'NF { print "\""$0"\","}' inputfile
        

        NF 告诉awk 仅在字段数大于零(行不为空)时执行打印命令。

        【讨论】:

          【解决方案7】:

          这是一个简单的单行:

          sed -i 's/^/"/;s/$/",/' file_name
          

          【讨论】:

            猜你喜欢
            • 2017-10-07
            • 2023-03-14
            • 2020-11-12
            • 2021-05-10
            • 2012-02-28
            • 1970-01-01
            • 2023-02-22
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多