如何使用 awk 分隔由等号分隔的两列文件?

rad*_*dox 3 regex bash awk sed

我真正的问题是我的文件如下所示:

username=password
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用 -F=,但是如果第二列可能包含等号,我该怎么办?

name=laskjf9w8u23;oi4==
Run Code Online (Sandbox Code Playgroud)

目前我拥有的代码正在砍掉最后一个等号。我只能假设,如果该字符串前面有一个等号,它也会被截断。

这是我目前拥有的:

cat file.txt | grep "=" | sed 's/\//\\\//g' | awk --field-separator "=" --assign file="<outfile>" '{printf "\"s/@%s@/", $1 ; for (i = 2; i <= NF; i++) { printf "%s", $i ; if ($i != $NF) printf "=" } ;  printf "/g\" %s\n", file; }' | xargs -n2 sed -i
Run Code Online (Sandbox Code Playgroud)

干杯!

Igo*_*ist 5

你真的必须使用吗awk?进行这种分离的最简单方法是cut

echo "name=laskjf9w8u23;oi4==" | cut -d= -f2-
laskjf9w8u23;oi4==
Run Code Online (Sandbox Code Playgroud)

请注意-f2-. 这意味着抓住倒数第二组,所以你最终不会只有laskjf9w8u23;oi4. 它也将处理后面的等号。

-d=设置=为分隔符。