你好我需要oneliner在unix中第二行第N次出现分隔符后插入字符;标准是这些。
注意:我在Linux中这样做。
答案 0 :(得分:2)
使用awk:
1 foo bar base
2 foo bar base
awk 'NR==2{$2=$2"X"; print}' file
-F
NR
指定我们处理的行$2
是按空格分隔的第2个值(在本例中为$2=$2"X"
是串联print
单独打印整行2 fooX bar base
答案 1 :(得分:1)
假设我们有输入文件:
$ cat file
1 foo bar base
2 foo bar base
要在第3次出现分隔符空格后插入字符X,请使用:
$ sed -r '2 s/([^ ]* ){3}/&X/' file
1 foo bar base
2 foo bar Xbase
要对文件进行更改,请使用sed的-i
选项:
sed -i -r '2 s/([^ ]* ){3}/&X/' file
考虑sed
命令:
2 s/([^ ]* ){3}/&X/
初始2
指示sed
仅将此命令应用于第二行。
我们正在使用s
或替换命令。此命令的格式为s/old/new/
,旧的和新的是:
old
是正则表达式([^ ]* ){3}
。这匹配所有内容,包括第三次出现的空格。
new
是替换文字&X
。 &符号指的是我们在old
中匹配的内容,它是第三个空格的所有行。 X
是我们要插入的新角色。
答案 2 :(得分:1)
这可能适合你(GNU sed):
sed '2s/X/&Y/3' file
仅在第二行Y
出现X
之后插入{{1}}。