输入文件(存在于(8,)
中):
/sys/test/list.txt
我需要使用shell脚本打印下面的值:
"BA_FN" = "John" <<NEW>>
"BA_ACCOUNT_NO" = "AACtesting56" <<NEW>>
"BA_BILLINFO_ID" = "BULCA8-67" <<NEW>>
"BA_LN" = "winslet" <<NEW>>
有人可以帮我吗?
答案 0 :(得分:0)
假设内容位于文件sample.txt中,它看起来像
"BA_FN" = "John" <<NEW>>
"BA_ACCOUNT_NO" = "AACtesting56" <<NEW>>
"BA_BILLINFO_ID" = "BULCA8-67" <<NEW>>
"BA_LN" = "winslet" <<NEW>>
我们可以使用以下命令打印
cat sample.txt |awk -F"=" '{split($2,a," ");gsub(/"/, "", a[1]);print a[1]}'
输出
John
AACtesting56
BULCA8-67
winslet
答案 1 :(得分:0)
这应该做你想要的:
awk '{print $3}' sample.txt | sed 's/"//g'
输出:
John
AACtesting56
BULCA8-67
winslet
要打破它:
默认情况下, awk
用空格分隔每个字段。 sample.txt
的每一行都有4个字段。在第一行:
第一个字段"BA_FN"
第二个字段=
第3个字段"John"
第4个字段<<NEW>>
由于您需要打印第3个字段:awk '{print $3}'
sed
就是这样的:
sed 's/pattern/replacement/g'
因此,在这种情况下,sed 's/"//g'
只是删除所有出现的"
并用空字符串替换它们。
答案 2 :(得分:0)
你可以试试这个:
cat /sys/test/list.txt | cut -d "=" -f2 | awk '{print $1}'| sed 's/"//g'| grep -v "^$"
并将显示:
John AACtesting56 BULCA8-67 winslet
但是如果你想抑制空行,你可以试试这个。
Table 1
package_name Vendor applicationname
TibcoBusnsStudio_360_00 tibco Tibco Business Studio
这将显示:
John AACtesting56 BULCA8-67 winslet
答案 3 :(得分:0)
与"
分开
awk -F '\"' '{print $(NF-1)}' file
答案 4 :(得分:0)
如果你不太关心空行,那么好老grep grep
怎么样:这将在" = "
和" <>
之间打印任何内容。
grep -oP '(?<=" = ").*?(?=" <>)' inputfile
John
AACtesting56
BULCA8-67
winslet
或者你想保留记录之间的空行:
awk '{gsub(/\"/,"",$3);print $3}' inputfile
John
AACtesting56
BULCA8-67
winslet