sed或awk附加到特定行

时间:2015-05-07 17:55:13

标签: bash google-chrome awk sed

我想从bash脚本编辑一个文件

if [[ -n "$CHROME_USER_DATA_DIR" ]]; then
  exec -a "$0" "$HERE/chrome"  \
    --user-data-dir="$CHROME_USER_DATA_DIR" "$@"
else
  exec -a "$0" "$HERE/chrome"  "$@"
fi

我想追加到包含 exec -a" $ 0"的任何行的末尾。 " $ HERE /铬" " $ @" 字符串

  --user-data-dir

结果将用

覆盖现有文件



    if [[ -n "$CHROME_USER_DATA_DIR" ]]; then
      exec -a "$0" "$HERE/chrome"  \
        --user-data-dir="$CHROME_USER_DATA_DIR" "$@"
    else
      exec -a "$0" "$HERE/chrome"  "$@" --user-data-dir
    fi




我很难理解sed和awk,但想要做到这一点。

3 个答案:

答案 0 :(得分:1)

尝试使用GNU sed编辑文件:

sed -i '5s/$/& --user-data-dir/' file

答案 1 :(得分:1)

不幸的是,您需要使用正则表达式而不是字符串比较,因为您的空白区域可能明显不同,因此引入了一些逃避复杂性。使用GNU awk获取-i inplace\s的{​​{1}}简写:

[[:space:]]

答案 2 :(得分:0)

使用awk你可以做到:

awk 'NR==5{$0=$0" --user-data-dir"}1' file > newfile