gpt4 book ai didi

awk - 使用 sed 或 awk,将行匹配模式移动到文件底部

转载 作者:行者123 更新时间:2023-12-03 08:55:08 31 4
gpt4 key购买 nike

我也有类似的问题。我需要将/etc/sudoers 中的一行移到文件末尾。

我要移动的行:

#includedir /etc/sudoers.d

我尝试过使用变量

#creates variable value
templine=$(cat /etc/sudoers | grep "#includedir /etc/sudoers.d")

#delete value
sed '/"${templine}"/d' /etc/sudoers

#write value to the bottom of the file
cat ${templine} >> /etc/sudoers

没有收到任何错误,也没有得到我正在寻找的结果。

有什么建议吗?

最佳答案

使用 awk:

awk '$0=="#includedir /etc/sudoers.d"{lastline=$0;next}{print $0}END{print lastline}' /etc/sudoers

也就是说:

  1. 如果行 $0"#includedir/etc/sudoers.d" 则将变量 laSTLine 设置为该行的值 $0 并跳到下一行 next
  2. 如果您还在这里,请打印行{print $0}
  3. 处理完文件中的每一行后,打印 laSTLine 变量中的所有内容。

示例:

$ cat test.txt
hi
this
is
#includedir /etc/sudoers.d
a
test
$ awk '$0=="#includedir /etc/sudoers.d"{lastline=$0;next}{print $0}END{print lastline}' test.txt
hi
this
is
a
test
#includedir /etc/sudoers.d

关于awk - 使用 sed 或 awk,将行匹配模式移动到文件底部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56113135/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com