我有个问题想问你,你知道是否有一个程序/软件可以轻松地在所有行中添加一个字符吗?例如,如果我想+
在这些行前面添加一个字符,但不想逐行添加,可以吗?
+CONFIG_PACKAGE_git=y
+CONFIG_PACKAGE_git-http=y
+CONFIG_PACKAGE_htop=y
CONFIG_PACKAGE_https-dns-proxy=y
CONFIG_PACKAGE_ip-full=y
CONFIG_PACKAGE_ip6tables-nft=y
CONFIG_PACKAGE_iperf3=y
CONFIG_PACKAGE_iptables-mod-conntrack-extra=y
CONFIG_PACKAGE_iptables-mod-ipopt=y
CONFIG_PACKAGE_iptables-nft=y
CONFIG_PACKAGE_irqbalance=y
CONFIG_PACKAGE_kmod-crypto-authenc=y
CONFIG_PACKAGE_kmod-crypto-cbc=m
CONFIG_PACKAGE_kmod-crypto-cts=m
CONFIG_PACKAGE_kmod-crypto-deflate=m
CONFIG_PACKAGE_kmod-crypto-des=m
CONFIG_PACKAGE_kmod-crypto-lib-chacha20=y
CONFIG_PACKAGE_kmod-crypto-lib-chacha20poly1305=y
CONFIG_PACKAGE_kmod-crypto-lib-curve25519=y
CONFIG_PACKAGE_kmod-crypto-lib-poly1305=y
CONFIG_PACKAGE_kmod-crypto-md5=m
CONFIG_PACKAGE_kmod-crypto-sha1=m
CONFIG_PACKAGE_kmod-crypto-sha512=m
CONFIG_PACKAGE_kmod-crypto-xts=m
CONFIG_PACKAGE_kmod-cryptodev=y
CONFIG_PACKAGE_kmod-ifb=y
CONFIG_PACKAGE_kmod-ip6tables=y
CONFIG_PACKAGE_kmod-ipt-conntrack=y
CONFIG_PACKAGE_kmod-ipt-conntrack-extra=y
CONFIG_PACKAGE_kmod-ipt-core=y
CONFIG_PACKAGE_kmod-ipt-ipopt=y
CONFIG_PACKAGE_kmod-ipt-ipset=y
CONFIG_PACKAGE_kmod-lib-zlib-deflate=m
CONFIG_PACKAGE_kmod-lib-zlib-inflate=m
# CONFIG_PACKAGE_kmod-mwifiex-sdio is not set
CONFIG_PACKAGE_kmod-nf-conncount=y
CONFIG_PACKAGE_kmod-nf-conntrack-netlink=y
CONFIG_PACKAGE_kmod-nf-ipt=y
CONFIG_PACKAGE_kmod-nf-ipt6=y
CONFIG_PACKAGE_kmod-nf-nat6=y
CONFIG_PACKAGE_kmod-nft-compat=y
CONFIG_PACKAGE_kmod-sched-cake=y
CONFIG_PACKAGE_kmod-sched-connmark=y
CONFIG_PACKAGE_kmod-sched-core=y
CONFIG_PACKAGE_kmod-tun=y
CONFIG_PACKAGE_kmod-udptunnel4=y
CONFIG_PACKAGE_kmod-udptunnel6=y
CONFIG_PACKAGE_kmod-wireguard=y
CONFIG_PACKAGE_libatomic=y
CONFIG_PACKAGE_libattr=y
CONFIG_PACKAGE_libavahi-client=y
CONFIG_PACKAGE_libavahi-dbus-support=y
CONFIG_PACKAGE_libbpf=y
CONFIG_PACKAGE_libbz2=y
答案1
是的,有很多种方法可以做到这一点,具体取决于您要寻找的内容。
sed -i -E 's/^(.*)$/\+\1/' file.txt
将在 file.txt 中的每一行前面添加一个 +,字面意思是:
for each line in file.txt
take the passage of any characters between the beginning and end of the line
and replace it with the same passage with a + prepended
正如评论中指出的那样,这可以最小化为:
sed -i 's/^/+/' file.txt
这意味着Replace the beginning of every line with a +
如果您想要更具选择性和交互性,I
vim 中的编辑操作会从行首开始编辑。将其与此处的.
for repeat last edit 结合使用。这样做,您可以在一行中添加一个加号,按下 Esc,然后只需向下箭头到其他行,.
无论在行的哪个位置单击,都可以以 开始该行+
。
答案2
使用 Notepad++ 或 Sublime Text 之类的程序。
将光标放在第一行(第 1 行,第 1 列)的开头。按住Shift+ Alt,然后单击最后一行(第 54 行,第 1 列)的开头。您应该看到左边框上有一个闪烁的光标,横跨所有行。
现在按下+,该按键将在所有选定的行上重复。
这在大多数文本编辑器和 SQL Server Management Studio 中有效,但在常规 Notepad.exe 或 Wordpad.exe(本机 Windows 文本编辑器)中无效。
答案3
大多数专为处理源代码而设计的优秀文本编辑器(Nodepad++、Sublime Text、VSCode、Vim、EMACS 等)都具有强大的搜索和替换语法,允许在行首进行匹配作为搜索表达式的一部分。这就是所谓的搜索模式中对正则表达式的支持的一部分。
在大多数这样的编辑器中,一个简单的^
搜索模式和一个+
作为替换文本就可以完成您在问题中描述的操作(例如,在 Vim 中就是这样:%s/^/+/
)。
但是,您可能想要的(只在非空行中添加加号,并且不以#
或开头+
)相当棘手,确切的语法略有不同。对于 VSCode,您可能希望将^([^#+])
和 作为搜索模式+$1
作为替换文本。对于 Vim,它(通常)是:%s/^\([^#+]\)/+\1/
。其他编辑器可能有自己的语法。