我有以下脚本:
var openMNav.isDropDown = false;
生成包含以下内容的文件:
#!/bin/bash
SOURCE="${BASH_SOURCE[0]}"
while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
SOURCE="$(readlink "$SOURCE")"
[[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
done
SCRIPT_PATH="$( cd -P "$( dirname "$SOURCE" )" && pwd )"/..
grep -o -P "(\w*_?)*=(\"|\').*(\"|\')" ${SCRIPT_PATH}/start.sh > ${SCRIPT_PATH}/run.env
来自包含内容的文件:
SOME_VAR="13434"
ANOTHER_VAR="BlAH BLAH BLAH"
但现在我想从生成的结果中删除(修剪) STARTING 和 TAILING asdf SOME_VAR="13434"\
ANOTHER_VAR= "BlAH BLAH BLAH" some other strings
字符。就我而言,我希望它的结果是:
"
你有什么想法我能做到吗?
答案 0 :(得分:1)
单个sed
电话可以解决问题:
sed -e 's/\([^=]*=\)"/\1/g' -e 's/"$//' file1 > file2
第一个正则表达式仅匹配第一个=
之后的引号,而第二个正则表达式仅匹配该行末尾的引号。
应该注意的是,如果您尝试在Bash中获取或执行它,则生成的文件将抛出错误,因为Bash不允许ANOTHER_VAR=BlAH BLAH
之类的内容。
答案 1 :(得分:1)
尝试:
awk '{sub(/"$/,"");sub(/="/,"=")} 1' Input_file
简单地替换最后一次出现的"用NULL代替="用=。然后在那里提到1来打印编辑/未编辑的行
答案 2 :(得分:0)
grep -oP '[^\s]+\s*=\s*"[^"]+"' file |sed 's/=\s*"\([^"]*\)"/=\1/'
-o
仅匹配单引号中的内容
-P
perl-like regexp
[^\s]+
非空格字符
sed
删除引号