提问人:Sam Kent 提问时间:9/3/2023 更新时间:9/3/2023 访问量:67
如何处理文件并用行号替换模式
How to process a file and replace a pattern with the line number
问:
所以,我正在尝试设计一个小程序,我打算使用一个配置文件,并将 ID 作为行号。下面是一个 .conf 文件的小示例:
ID=_PATTERN_
STATE=window
DIR=_code
GEO=1200x250+0+32
CMDS=cd home
我正在尝试找到一种用行号替换的方法。这主要是因为 ID 对于创建文件的人来说并不重要,只是对于使用 .conf 的处理脚本。所以我想,只要通过一些预处理使ID自动生成即可。我正在考虑使用 OR,但我真的不确定要查找什么才能得到答案。_PATTERN_
sed
awk
答:
1赞
Kaz
9/3/2023
#1
在 shell 提示符下:
$ awk '{ gsub(/_PATTERN_/, FNR); print }'
_PATTERN_
1
_PATTERN_ _PATTERN_
2 2
foo _PATTERN_
foo 3
评论
0赞
Sam Kent
9/3/2023
谢谢你,这正是我想要的!你能为我解释一下 gsub 和 FWR 吗?
1赞
Kaz
9/3/2023
比一本好书或教程更好?不可能。man gawk
1赞
Romeo Ninov
9/3/2023
该脚本可以简化为::)。 将模式替换为字符串,()平均记录数(行),表示打印“已编辑”行。awk '{ gsub(/_PATTERN_/, NR)}1'
gsub
NR
FNR
1
0赞
Kaz
9/3/2023
@RomeoNinov 这种简化的行话是“高尔夫”。(见 codegolf.stackexchange.com)。
0赞
Romeo Ninov
9/3/2023
@Kaz,我不太擅长编程高尔夫:)
评论
_PATTERN_
_PATTERN_
=
_PATTERN_
ID
ID
ID
_PATTERN_
_PATTERN_
ID=1