我正在一个小工业盒子里为嵌入式Linux编写shell脚本.我有一个包含文本的变量pid: 1234,我想从行中删除前X个字符,因此只剩下1234个字符.我有更多需要"清理"的变量,因此我需要删除X个第一个字符,${string:5}并且由于某种原因在我的系统中不起作用.
盒子似乎唯一拥有的是sed.
我正在尝试使以下工作:
result=$(echo "$pid" | sed 's/^.\{4\}//g')
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
假设我有一个带行的文件
aaa=bbb
现在我想用以下代替它们:
aaa=xxx
我可以这样做:
sed "s/aaa=bbb/aaa=xxx/g"
现在我有一个包含几行的文件,如下所示:
aaa=bbb aaa=ccc aaa=ddd aaa=[something else]
我怎么能代替所有该行aaa=[something]与aaa=xxx使用sed的?
我试图输出一个字符串,其中包含字符串的两个单词之间的所有内容:
输入:
"Here is a String"
Run Code Online (Sandbox Code Playgroud)
输出:
"is a"
Run Code Online (Sandbox Code Playgroud)
使用:
sed -n '/Here/,/String/p'
Run Code Online (Sandbox Code Playgroud)
包括端点,但我不想包含它们.
如何使用sed搜索和替换整个单词?
干
sed -i 's/[oldtext]/[newtext]/g' <file>
Run Code Online (Sandbox Code Playgroud)
也将替换[oldtext]我不希望它做的部分匹配.
我运行sed在Windows上进行一些替换,我注意到它会自动将行结尾转换为Unix(\n).是否可以选择告诉sed使用Windows行结尾(\ r \n),甚至更好地保留文件中的行结尾?
注意:我使用unxutils中的sed:http://unxutils.sourceforge.net/
如何使用bash在文件中的每一行后添加一个字符串?是否可以使用sed命令完成,如果是这样的话?
如果我在bash中运行此代码:
echo dog dog dos | sed -r 's:dog:log:'
Run Code Online (Sandbox Code Playgroud)
它给出了输出:
log dog dos
Run Code Online (Sandbox Code Playgroud)
我怎样才能让它取代所有出现的狗?
我使用JQ解析一个JSON文件,如这里.但是,字符串值的结果包含预期的"双引号",如下所示:
$ cat json.txt | jq '.name'
"Google"
Run Code Online (Sandbox Code Playgroud)
如何将此管道传输到另一个命令以删除""?所以我明白了
$ cat json.txt | jq '.name' | some_other_command
Google
Run Code Online (Sandbox Code Playgroud)
我some_other_command可以用什么?
我有一个简单的shell脚本,可以从文件中删除尾随空格.有没有办法让这个脚本更紧凑(没有创建临时文件)?
sed 's/[ \t]*$//' $1 > $1__.tmp
cat $1__.tmp > $1
rm $1__.tmp
Run Code Online (Sandbox Code Playgroud) 我看到很多关于如何使用sed,awk或gawk进行搜索和替换等操作的示例和手册页.
但在我的情况下,我有一个正则表达式,我想对文本文件运行以提取特定的值.我不想做搜索和替换.这是从bash调用的.我们来举个例子:
正则表达式示例:
.*abc([0-9]+)xyz.*
Run Code Online (Sandbox Code Playgroud)
示例输入文件:
a
b
c
abc12345xyz
a
b
c
Run Code Online (Sandbox Code Playgroud)
听起来很简单,我无法弄清楚如何正确调用sed/awk/gawk.我希望做的是,在我的bash脚本中有:
myvalue=$( sed <...something...> input.txt )
Run Code Online (Sandbox Code Playgroud)
我尝试过的事情包括:
sed -e 's/.*([0-9]).*/\\1/g' example.txt # extracts the entire input file
sed -n 's/.*([0-9]).*/\\1/g' example.txt # extracts nothing
Run Code Online (Sandbox Code Playgroud)