$ echo file.txt
NAME="Ubuntu" <--- some of this
VERSION="20.04.4 LTS (Focal Fossa)" <--- and some of this
ID=ubuntu
ID_LIKE=debian
VERSION_ID="20.04"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
I want this: Ubuntu 20.04.4 LTS
.
I managed with two commands:
echo "$(grep '^NAME="' ./file.txt | sed -E 's/NAME="(.*)"/1/') $(grep '^VERSION="' ./file.txt | sed -E 's/VERSION="(.*) (.*"/1/')"
How could I simplify this to one command using grep/sed or perl?
2
Answers
With your shown samples try following
awk
code.Explanation:
"
for all the lines here.Name=
then create variable name which has 2nd field.next
will skip all further statements from there ofawk
program, they needed not to be executed.VERSION=
then print name and 2nd field here as per requirement.Here is another
awk
solution: