【问题标题】:how to add a word at the end of a line with ^ without a line break?如何在没有换行符的情况下用 ^ 在行尾添加一个单词?
【发布时间】:2020-02-08 04:56:24
【问题描述】:

我想在文件中特定行的末尾添加一个字符串(例如:“1565555555”)。

我之前的文件.txt:

mystrinsdsfssffdfdg
mystrdsfdsfdfffding
mystrsfdsdfsffdfing
mystrdsfdfsdfsffing

这是我的脚本:

for file in mydirectory/*txt; do
  filename=`basename "$file"`
  # read each line
  while IFS= read -r line
  do
     old="$IFS"
     IFS="^"
     set $line

     IFS="$old"
     count=1
     id="2656556655"

     sed "s/$line/&^$id/" -i $file #my problem
  ((count++))
  done < "$file"
done

今天,我的结果:

mystrinsdsfssffdfdg
^2656556655
mystrdsfdsfdfffding
^2656556655
mystrsfdsdfsffdfing
^2656556655
mystrdsfdfsdfsffing
^2656556655

预期结果:

mystrinsdsfssffdfdg^2656556655
mystrdsfdsfdfffding^2656556655
mystrsfdsdfsffdfing^2656556655
mystrdsfdfsdfsffing^2656556655

【问题讨论】:

  • 根据您的书面描述,此代码毫无意义。这将按照您在“预期结果:”中说的做:sed -i 's/$/^2656556655/' myfile.txt

标签: bash sed sh


【解决方案1】:

假设目标是在给定文件的每一行末尾附加一个字符串 (^2656556655) ...

一个示例文件:

$ cat mystring.txt
mystrinsdsfssffdfdg
mystrdsfdsfdfffding
mystrsfdsdfsffdfing
mystrdsfdfsdfsffing

附加到文件每一行末尾的一个sed 解决方案:

$ sed 's/$/^2656556655/g' mystring.txt
mystrinsdsfssffdfdg^2656556655
mystrdsfdsfdfffding^2656556655
mystrsfdsdfsffdfing^2656556655
mystrdsfdfsdfsffing^2656556655

此方法的一个好处是您将 a) 内部循环构造和重复的 sed 调用替换为文件中的每一行 b) 单个 sed 调用和单次通过输入文件。最终结果是您应该会看到处理给定文件所需的时间明显加快。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-28
    • 2011-09-25
    • 1970-01-01
    相关资源
    最近更新 更多