需要bash大师
要比较多个日期的mysqldumps,我需要sql GROUP BY、ORDER BY功能。。。但是在命令行上
使用grep/sed/awk,我需要查找所有INSERT语句,然后导出每个tablename的行计数。我也希望每个表名有一个字节计数
典型的线条如下所示:
INSERT INTO `admin_rule` ...
匹配插入,然后匹配``中的表名,按唯一表名计数这个awk小片段怎么样:
BEGIN { FS="`" }
/^INSERT/ { count[$2]+
我想用前一个数字交换一个数字:
例如123456至214365
在bash环境中如何使用sed/awk实现这一点?在您对回答您的问题的评论之后,您似乎想更具体地说明您交换了哪些数字
echo 123456 | sed 's/\([0-9]\)\([0-9]\)/\2\1/g'
我将使用awk交换第二列中的所有数字对:
bash-3.2$ gawk -V | sed -n 1p
GNU Awk 4.0.0
$ echo 254789123456,5306153059630141,6390270
我只是不了解sed中的模式匹配,更糟糕的是,这里有引号作为分隔符
我有:
并获得:
'PhaseRayA: ' 'sca/sca_out/sc_ray_a.s'
'PhaseRayO: ' 'sca/sca_out/sc_ray_o.s'
作为输出。A现在,我想提取:
sca/sca_out/sc_ray_a
sca/sca_out/sc_ray_o.s.s
所以我的模式应该是“*.s”,引号是模式的一部分,但不是想要的结果的一部分
有什么想法吗?
从sed的文档中:
sed维护两个数据缓冲区:活动模式空间和
辅助等待空间。两者最初都是空的
我最初认为模式空间和保持空间的值为null(nothing)。但是从下面的示例来看,它们的初始值似乎是一个换行符(\n)
我的理解正确吗?
谢谢。我认为答案是,p命令与默认的打印操作一样,实际上是在空白图案空间的末尾添加一个换行符。这是基于GNUsed文档(顺便说一下,就在您引用的那一位下面):
sed通过对每一行输入执行以下循环进行操作:首先,sed从输入流中读取一行,删除任何尾随换行符,并将其放置在
我有两个文件,我想合并如下。
文件1:
文件2:
AAA
9876
67 89 01
BBB
4567
23 45 23
需要最终文件
AAA 1234 9876 67 89 01
BBB 2341 4567 23 45 23
如何在awk或sed或两者中实现这一点?您可以尝试这一点(也许这是一个大的解决方案,但它可以工作):
a、 awk:
您可以尝试以下方法(也许这是一个大的解决方案,但它很有效):
a、 awk:
transform.awk
{key=($1 ~/[A-Z]+/)}
我正在使用sed查找和替换文本,例如:
set -i 's/a/b/g' ./file.txt
这将用文件中的b替换a的每个实例。我需要添加一个异常,sed将a的每个实例替换为b,但文件中的第一个实例除外,例如:
There lived a bird who liked to eat fish.
One day he fly to a tree.
这就变成了:
There lived a bird who liked to ebt fish.
One dby he fly to b tree
我有一些java代码声明了我想要翻转的2d数组。
内容如下:
zData[0][0] = 198;
zData[0][1] = 198;
zData[0][2] = 198;
...
我想有一个
zData[0][0] = 198;
zData[1][0] = 198;
zData[2][0] = 198;
所以我试着用sed来做:
sed -r 's#zData[([0-9]*)][([0-9]*)]#zData[\2][\1]#g' DataSample1.java
但不幸的是
标准正则表达式
我有一个(部分)JSON字符串,如下所示:
"99887":{"foo":"99887","bar":"paul"},"88776":{"foo":"88776"...
我需要去掉每个{之前的数字字符串以生成以下内容:
{"foo":"99887","bar":"paul"},{"foo":"88776"...
对于普通正则表达式,我将使用模式(“\d{5}\:)(\{),并保留$2
sed
我很难将其转换为sed命令:
sed 's/\("\d{5}":\)\(\{\)/\
我想换新的
/fdasatavol/ankit
到
有人能帮我吗?要写入新文件(不修改文件1):
或在原始文件中替换:
sed -i 's/fdasatavol/fdasatavol_sata/g' file1
这将用fdasatavol\u sata替换每次出现的fdasatavol:
sed 's/fdasatavol/&_sata/g'
如果您的输入出现了不在/fdasatavol/ankit中的fdasatavol,并且您不想替换它们,则使用:
sed 's@/fdasat
我有一个VisualStudio项目,是在本地开发的。代码文件必须部署到远程服务器。唯一的问题是它们包含的URL是硬编码的
该项目包含URL,例如?page=one。要使链接在服务器上有效,它必须是/page/one
我已经决定在部署之前用sed替换代码文件中的所有url,但我仍然坚持使用斜杠
我知道这不是一个很好的解决方案,但它很简单,可以节省我很多时间。我必须替换的字符串总数少于10个。必须检查的文件总数约为30个
下面是描述我的情况的示例:
我正在使用的命令:
sed -f replace
我试图从一个非常大的文件中收集文件名,这取决于是否找到了特定的用户,在本例中是windowsdom\nasarchive
我尝试运行了sed-nr/-{3,}/h;/Path\s*:/h;/windowsdom\\nasarchive\s+Allow\s+FullControl/{x;G;p}“logfilename,但它没有带来任何结果
-----------------------
Path: U:\Credit share\BI-WEEKLY CREDIT NOTES\2010\Credi
我试图使用脚本在出现新文本时在latex文件中插入\cbstart{}和\cbend{}标记
end=$(( $start + $diff ))
sed -i "" "${start}s/^/\\\\cbstart{} /" "$OUT"
sed -i "" "${end}s/$/ \\\\cbend{}/" "$OUT"
但是,如果将\cbend{}标记放在末尾包含注释的新行上,则:
\cbstart{} Example text. %Example commment \cbend{}
注
我正在尝试使用sed修改一行,如下所示
CustomLog /home/logs/httpd/access_log common
到
我尝试了sed替换为文本,但没有成功。我正在尝试对大约800个文件执行此操作,因此需要一个命令来执行此操作。这似乎有效:
sed 's/\([^ ]*\) \([^ ]*\) \([^ ]*\)/\1 "|\/usr\/sbin\/rotatelogs \2_`date +%m_%d_%Y` 86400" combined/'
例如:
> echo "C
我有一个有多行的文件,对于文件末尾的第2行,我想交换字段8和9。该文件是逗号分隔的,我希望进行内联交换,以便使用*通配符在一批文件上运行它。如果这可以用awk类似地完成,那么这对我也适用
例如:
header1,header2,header3,...,header8,header9,...,headerN
field1.1,...,field1.9,field1.8,...,field1.N
field2.1,...,field2.9,field2.8,...,field2.N
field3.1
我试图将这一行拆分为多行,每行包含一个单独的句子:
This is a first sentence. This is a second sentence. Look at this: a third sentence! Where does this ends? I have no Idea, who knows…
我们必须尽可能使用最短的命令
我试过这个:
sed 's/[.?!]/&\n/g'
但它会在每一个新句子后面加上一个空格:
This is a first senten
我的文件名为CULT_2009_BARRIERS_EXP_Linear.dbf
并希望将其重命名为
CULT_barries_EXP_Linear.dbf。
这些文件有一个日期前缀,它总是不同的,显示它被捕获的时间。
我试图用正则表达式替换它们。我想测试字符串是否包含数字,然后重命名。我用过
if [[ $file =~ [0-9] ]]; then rename -v "s/[0-9]//g" * && rename -v s/[_]_/_/ *;
部分有效。
我有这条线
sed -i '/Total number 1/d' /tmp/test.txt
这将删除行
Total number 1
但它也删除了,
Total number 11
Total number 12
Total number 13
如何将其设置为仅删除单个数字?在末尾添加一个美元符号sed-I'/Total number 1$/d'/tmp/test.txt
此外,如果要删除任何单个数字,请替换1:sed-i'/Total number[0-9]$/d'/tmp/tes
我需要更改文件中的字符串,该字符串在每一行上重复,但我只需要更改几行(不是所有行)。
例如,/etc/fstab文件:
/dev/mapper/rhel-root / xfs defaults 0 0
/dev/mapper/rhel-boot /boot ext4 defaults 1 2
/dev/mapper/rhel-hom
我想补充一点
-
paths:
- /var/log/consumer.log
document_type: consumer
input_type: log
在浏览者之后:在我的文件中。我正在使用命令:
sed -i '/prospectors:/a\ \ \ \ \-
\ \ \ \ \ \ paths:\
\ \ \ \ \ \ \- \/var\/log\/consumer.log
\ \ \ \ \ \ document_type: consumer
\ \ \
我知道这应该是直截了当的,但我被卡住了,对不起
我有两个文件都包含相同的参数,但值不同。我试图一次读取一行文件,获取参数名,在第二个文件中使用它进行匹配,并用文件1中的那行替换整行
e、 g.rw_2.core.fvbCore.Param.isEnable 1(FVB_参数)
变成
rw_2.core.fvbCore.Param.isEnable true(FVB_布尔值)
这些线的长度并不总是相同的,但我总是想替换整条线
我的代码如下,但它没有进行替换,我也不知道为什么不能
while rea
sed的内容如下:
a-b-
下面是sed语法
s/\(b\?\)-/x\u\1/g
第三个是输出
axxB
我想知道它如何匹配。我听不懂“b\?”。这是什么意思?“\?”是否只是指“?”s/regex/replacement/g是您命令的基本结构,您可以在此处阅读:
mansed | sed-n'/^\s\{7\}s\/,/exp.$/p'
由于sed读取一行一行,因此有一个选项g,您可以将它附加到s//,以匹配一行中出现的每个regex,而不仅仅是第一个。这就是为什么您有:
s/rege
在用于Windows的MKS SED上,此
TYPE Q:\temp\curtainssetspread.M3U | SED -E "/z/{s_a_b_}"
失败于
sed: garbage after command
为什么?
此用法与以下文档完全一致:
a,b{ groups all commands until the next matching }, so that sed executes the entire group only if the { command is
我发现这个命令很难理解
我甚至找不到man sed下的-E选项,但该命令仍然有效。
替换没有意义,因为它在流的开始处查看,然后立即显示为管道
任何解释都将不胜感激。不确定您使用的是sed的哪个实现
看看gnu实现
参考:
不确定您正在使用的是sed的哪个实现
看看gnu实现
参考:
只要它不是三个或更多破折号序列的一部分,它就用xx替换--。|不是管道,它是另一种选择(^-])表示“行的开头,或者不是-”的字符,([^-])表示“不是-的字符,或者是行的结尾”。然后,这些组捕获的任何内容都会包含
我有一个选项卡文件,有两列,如下所示
BB_12 100_AA
BB_13 101_AB
BB_14 102_AD
BB_15 103_AC
我希望删除第二列中的数字(将数字替换为零)。为此,我尝试了以下几种方法,但没有成功
sed 's/\d+\_//g' infile
sed 's/(\d+\_)//g' infile
但这些调整都不起作用。看起来它没有在第二列中搜索。如何修改这个?预期产量为
BB_12 AA
BB_13 AB
BB_14 AD
BB_15 AC
假设以下代码段:
<head>
<script>....</script>
<script>....</script>
</head>
<body>
<script>
some stuff
a change
more stuff
more changes
more stuff
}
我试图用sed替换固定长度的字母数字后面的字符串
testing-1xs-a-2x-782b1x9.abc.txt
testing-12a-b-2y-486eee2.bcd.txt
testing-1a-c-2z-b62cx7d.cde.txt
我尝试了这个命令-sed's/[a-zA-Z0-9]{7}.//g'file
预期产出:
testing-1xs-a-2x
testing-12a-b-2y
testing-1a-c-2z
你能试试下面的吗
awk --re-interval '{s
我要删除TBLProperty和之间的所有文本);在包含以下内容的文本文件中:
create table1(<column list> )
TBLPROPERTIES (text1=001 );
create table2(<column list> )
TBLPROPERTIES (text2=002 );
create table3(<column list> )
TBLPROPERTIES (text3=003 );
.....
....
..
....
我正在用包含特定字符的行混淆文件中的MAC地址。但是,我只想在事件关键字指示的行中删除它。对我来说,最困难的是,在偶数关键字和MAC地址之间会有随机长度的关键字,包括数字和字母。
因此,我将替换为:
[random length combinations of words, numbers, potentially punctuation or space] "event" [random length combinations of words, numbers, potentially pu
我有以下几行:
XYZ2342
ABCD1323
KIL9824
我想删除开头的所有字母,因此对于上面的示例,我会得到:
2342
1323
9824
我试过这个:
echo "ABC12345" | sed 's/[[:alpha:]]*[[:digit:]]//'
2345
但是它也删除了第一个数字,我如何使sed只删除字母(注意:它们总是ASCII)
如果相关的话,我正在使用FreeBSD sed实现。请尝试以下内容。我们需要替换所有内容,直到从开始到第一次出现
我正在尝试编写一个sed表达式,可以从文件中删除URL
范例
http://samgovephotography.blogspot.com/ updated my blog just a little bit ago. Take a chance to check out my latest work. Hope all is well:)
Meet Former Child Star & Author Melissa Gilbert 6/15/09 at LA's B&
您好,我想使用sed搜索一个文件,搜索3-5个字母字符和3个数字,并在第一个字母字符后插入冒号,在数字前插入冒号,使用Ubuntu 10.04.2 LTS上的GNU sed:
sed -r -e 's/([a-zA-Z]{3,5})([0-9]{3})/\1:\2/g'
编辑:误读了OP的问题。更好的答案是:
sed -r -e 's/([a-zA-Z])([a-zA-Z]{2,4})([0-9]{3})/\1:\2:\3/g'
如果您希望字符串abcdef123或abcde1234失败,您
我在shell脚本中有一个环境变量文件,例如:
# This is a comment
ONE=1
TWO=2
THREE=THREE
# End
#!/bin/sh
# Read variables
source ./vars
# Change a variable
THREE=3
# Write variables back to the file??
awk 'BEGIN{FS="="}{print $1=$$1}' <./vars >./vars
在我的脚本中,我将这个文
我有一个定义明确的问题,似乎是sed的一个很好的候选人
我的输入文件包含两个令牌之一:
[文件]或[行]
结构如下所示:
[FILE]: C:\Users\user\git\build.xml
[FILE]: C:\Users\user\git\dataload-pom.xml
[FILE]: C:\Users\user\git\local.properties
[LINE]: [job.mail.toAddress=]
[LINE]: [log.mail.toAddress
标签: Sed
Grep
substringvmware-workstation
我有这个:
Product Name Product Version
==================== ====================
vmware-workstation 9.0.2.1031769
我可以通过以下方式获得vmware workstation部件:
$ vmware-installer -l | grep -Po "(?=v)[^ ]*(?= )"
如何获取版本号部分(没有构建,意思是9.0.2)
这:
(?:)
避免使用s
我正在尝试插入此文本
"error.emailNotActivated":"This email address has not been activated yet."
。。。在第5行使用sed
这是我目前的命令
translated=“此电子邮件地址尚未激活。”;
sed-i'-e'5i\'$'\n''错误。emailNotActivated:“'\'$translated\'”local.strings;
不幸的是,我一直收到错误消息“无效命令代码T”。
sed似乎将冒号解释为命令的一
我想从文件中删除少于2列的行:
awk '{ if (NF < 2) print}' test
one two
如果要根据条件将输入拆分为两个文件(名为“通过”和“失败”):
awk '{if (NF > 1 ) print > "pass"; else print > "fail"}' input
如果您只是想过滤/删除NF2的行重定向到一个文件,以及NF为的行?请澄清:您的问题不明确。文本中说“小于2”(即NF
如果有人知道如何轻松做到这一点,请告诉我。我的结论如下:
mac: 24:A4:3C:74:C0:49 name : SomeSome1 lastip : 192.168.1.178 txpower : 56 quality : 97 capacity : 95
mac: DC:9F:DB:62:10:BF name : SomeSome2 lastip : 192.168.1.58 txpower : 56 quality : 97 capacity : 11
mac: DC:9F:DB:3E
标签: Sed
Awk
fieldcuttext-parsing
我有一个带有管道分隔字段的文件。我想打印字段1的子集和字段2的全部:
cat tmpfile.txt
# 10 chars.|variable length num|text
ABCDEFGHIJ|99|U|HOMEWORK
JIDVESDFXW|8|C|CHORES
DDFEXFEWEW|73|B|AFTER-HOURS
我希望输出如下所示:
# 6 chars.|variable length num
ABCDEF|99
JIDVES|8
DDFEXF|73
我知道如何获取字段1和字段2
标签: Sed
text-filesnewline
我有一个这样的文件,infle.txt:
foo bar
hello world
blah blah black sheep
我想得到:
foo
bar
hello
wolrd
blah
blah
black
sheep
我试过这个
echo infile.txt | sed -e 's/[[:space:]]/\n/g' | grep -v '^$'
但它无法识别换行符和输出:
foo
bar
hello
wolrd
blah
blah
black
sheep
如何实现
我尝试使用sed搜索文件中的最后一个事件。在HP-UX中,tac选项不可用
例如:下面是文件中的数据
A|2121212|666666666 | 2|01|2 |B|1111111111 |234234234 |00001148|
B|2014242|8888888888| 3|12|3 |B|22222222222 |45345345 |00001150|
C|4545456|4444444444| 4|31|4 |B|3333333333333 |4234234 |00001148|
我正
我有一个充满行的文本文件,看起来像:
Female,"$0 to $25,000",Arlington Heights,0,60462,ZD111326,9/18/13 0:21,Disk Drive
我正在尝试将所有逗号,更改为管道|,引号中的逗号除外。
尝试使用sed(我是新手)。。。而且它不起作用。使用:
sed '/".*"/!s/\,/|/g' textfile.csv
有什么想法吗?使用awk可以:
kent$ cat f
foo,foo,"x,y,z",foo,"a,b,c"
我试图在文件开头插入一行包含以下字符:~o。我正在使用:sed-i''“1s/^/~o\n/”宏,但换行选项根本不起作用。我应该如何改变它?谢谢您可以使用insert命令i:
sed '1i\TEXT TO INSERT' file
说明:
1 Addresses the first line
i The insert command inserts the following
text before(!) line 1
\ Required after i
我有一个html文件,其中包括以下部分:
<div id='webnews'>
... variable stuff ...
</div>
<!--
<div id='webnews'>
... variable stuff ...
</div>
-->
sed '/<div id="webnews"/, /<\/div>/ { p }' filename.html
... 可变的东西。。。
我想评论如下:
我正在使用sed合并目录中的文本文件行。
命令cd dir&&sed-e'N;s/\n/'*.txt可以很好地实现这一点,但是否有任何方法可以对其进行调整,使其仅将以**开头的行句子与以下以**结尾的句子组合在一起。所以
This is Line1
**This is Line2
This is Line3**
This is Line4
This is Line5
变成
This is Line1
** This is Line2 This is L
我能够分别删除具有特定模式和较短sed'/^.\{,20\}$/d'-I文件或较长sed'/^.\{25\}.*/d'-I文件的行,但如何在sed中统一模式和长度
包含字符的行应介于20到25个字符之间
包含B的行应介于10到15个字符之间
包含C的行应介于3到8个字符之间
应该从文件中删除所有其他行
1234567890 A 1234567890
12345 A 12345
1 A 1
1234567890 B 1234567890
12345 B 12345
1 B 1
1234567890
我使用以下内容替换行号29到32上的文本:
sed -i '29,32 s/^ *#//' file
如何在上述命令中进一步添加行号,即line35到38、line43和line45m是一个标签
sed -i '29,32bm;35,38bm;43bm;45bm;b;:m;s/^ *#//' file
从man sed:
b标签:分支到标签;若省略了标签,则分支到脚本的末尾
:标签:b和t命令的标签
这可能适用于您(GNU-sed):
使用awkawk'NR>28&&NR34&&NR
我试图用sed操作一个数据集,这样我就可以成批地操作它,因为数据集具有相同的结构
我的数据集有两行(本例中的第一行是第7行),如下所示:
Enginenumber; ABX 105;Productionnumber.;01 2345 67-
"",,8-9012
我想要的是:
Enginenumber; ABX 105;Productionnumber.;01 2345 67-8-9012
因此,第二行中的数字(8-9012)被添加到第一行的末尾,因为这些数字彼此属于
我所尝试的:
sed
我正在尝试递归地查找root的所有实例,并将其替换为usr/local
我知道这个命令:
find ./ -type f -exec sed -i -e 's/apple/orange/g' {} \;
在尝试用另一个字符串替换不带“/”的字符串时有效,但如何将“/”包含在替换的字符串中 要在替换中使用/,可以使用\进行转义,
或者s命令可以使用不同的分隔符:
sed 's|root|usr/local|g' ...
此外,(非标准)-i选项需要FreeBSDsed(1)中的一个参数,并扩展
我感谢你在这个问题上的帮助。我喜欢从字符串中删除所有非特定模式的内容
例如,下面我想消除所有不是“5TTGTC”的东西
但正如这里所见,^5TTGTC是不对的。我使用了^(),^{},^[]的不同组合,但没有一个能提供我所需要的。感谢您的反馈
echo ".,..,...+5TTGTC...+5TTGCC.+5TTGTC,,.,.,,.,+5ttgtc,.,,.,.+5TTGTC.+5TTGTC,..+5TTGTC" | sed 's/^5TTGTC//g'
提前感谢如果需要区分大小写,可以
我正在尝试重命名fastq头并使用sed commmand在fastq头的末尾添加“/1”。
这是我的密码:
sed i '1~4 s/$/\\1/g' seq/*_1.fq
但没有任何改变。有人知道如何解决这个问题吗?谢谢 对于与glob seq/*\u 1.fq匹配的文件,这将在第n*4+1行中添加/1,其中n>=0:
sed -i '1~4s/$/\/1/' seq/*_1.fq
您没有提供任何输入,此处是我使用的:
a
b
c
d
e
f
结果是:
a/1
b
c
d
e/1
f
1 2 3 4 5 6 ...
下一页 最后一页 共 32 页