如何通过 lineinfile 模块中的正则表达式参数匹配变量的值?
- name: emptyline before search
lineinfile:
dest: ~/file
insertbefore: '^{{ search_text }}$'
line: ''
我在上面尝试了单引号/双引号,它似乎不起作用
我有 2 个文件,当它们的列匹配时,尝试将从 file2 获取的列值设置为 file1
file1:
signup||20200620|A3332|en|LA||ACTIVE
signup||20200620|B4443|en|CA|66001|ACTIVE
signup||20200620|C2221|en|WC||ACTIVE
signup||20200620|D1110|en|LA||ACTIVE
signup||20200620|E5554|en|WC|66003|ACTIVE
file2:
A3332||99001
B4443|66001|99003
D1110|66004|99007
E5554||99004
标准: file1 的 $4 必须匹配 file2 的 $1,匹配后它应该设置 file1 的 $7 等于 file2 的 $3
期望:
signup||20200620|A3332|en|LA|99001|ACTIVE
signup||20200620|B4443|en|CA|99003|ACTIVE
signup||20200620|C2221|en|WC||ACTIVE
signup||20200620|D1110|en|LA|99007|ACTIVE
signup||20200620|E5554|en|WC|99004|ACTIVE
我正在尝试什么
awk 'BEGIN{ FS=OFS="|" } NR==FNR{a[NR]=$1; b[NR]=$3; next} {if (a[FNR] = $4); $7=b[FNR]; print}' file2 file1
我得到了什么
signup||20200620|A3332|en|LA|99001|ACTIVE
signup||20200620|B4443|en|CA|99003|ACTIVE
signup||20200620|C2221|en|WC|99007|ACTIVE
signup||20200620|D1110|en|LA|99004|ACTIVE
signup||20200620|E5554|en|WC||ACTIVE
如果这是逻辑错误或其他原因,我会摸不着头脑
文件1:
G A 4
H B 3
I C 2
J D 1
文件2:
M H 6
N H 5
O K 4
P J 3
Q I 2
R I 1
S G 0
T L 1
期望:
M H 6
N H 5
P J 3
Q I 2
R I 1
S G 0
仅打印 file2 中的 $2 与 file1 中的 $1 匹配的行
我正在尝试构造 if 语句,但它给了我下面的语法错误
awk 'NR==FNR{a[NR]=$1; b[NR]=$2; next} ; {if{a[FNR]==b[FNR]}; {next}; { print }' file1 file2
syntax error at source line 1
context is
NR==FNR{a[NR]=$1; b[NR]=$2; next} ; >>> if <<< {a[FNR]==b[FNR]; next}; { print }
或者如果不使用 if 动词则没有输出
awk 'NR==FNR{a[NR]=$1; b[NR]=$2; next} ; {a[FNR]==b[FNR]; next}; { print }' file1 file2
我正在使用 ag v 2.2。如何配置 ag 以便它搜索以“。”开头的文件 除了所有其他文件?我注意到我有一个像这样的文件
$ cat client/.env.production
REACT_APP_PROXY=https://map.chicommons.coop
但是当我使用该文件中的术语搜索“ag”时,该术语不会出现......
$ ag 'map\.chicom' .
web/directory/settings.py
28:ALLOWED_HOSTS = ['127.0.0.1', 'localhost', 'dev.chicommons.coop', 'map.chicommons.coop']
client/config.js
3: ? "map.chicommons.com"
在wget --help
我想快速转到--header
解释选项的地方的输出中。
我尝试使用搜索less
。man less
解释:
/pattern
Search forward in the file for the N-th line containing the pattern. N defaults to 1. The pattern is a regular expression, as recognized by the regular
expression library supplied by your system. The search starts at the first line displayed (but see the -a and -j options, which change this).
按照这个建议,我尝试:
wget --help | less /header
但这会导致错误:
/header: No such file or directory
怎么了?