我想我有一个sed或awk问题。我试图从bash脚本中操作一个配置文件,但是我找不到正确的方法来完成它。AWK或Sed,还是一起?
我在配置文件中的以下内容:
bla.update(
{'test': {'tag': 'twenty',
并希望将其更换到:
bla.update({
'test': {'tag': 'twenty',
我尝试过各种sed的& awk的教程,但我找不到它。
我猜不应该太难,但我卡住了,请帮助我!
我想我有一个sed或awk问题。我试图从bash脚本中操作一个配置文件,但是我找不到正确的方法来完成它。AWK或Sed,还是一起?
我在配置文件中的以下内容:
bla.update(
{'test': {'tag': 'twenty',
并希望将其更换到:
bla.update({
'test': {'tag': 'twenty',
我尝试过各种sed的& awk的教程,但我找不到它。
我猜不应该太难,但我卡住了,请帮助我!
一些这样的:
awk 'f {sub(/{/,x);f=0} /bla.update/ {$0=$0 "{";f=1}1'
bla.update({
'test': {'tag': 'twenty',
它搜索bla.update
然后添加{
末,并设置标志f=1
如果标志f
设置,那么从线和清晰的标志开始删除{
。
酷!那样做了。谢谢! – Ron
下面是使用的尝试sed
sed 'N;s/(\s*\n\s*{/({\n/g' file
样品输入:
bla.update(
{'test': {'tag': 'twenty',
输出:
bla.update({
'test': {'tag': 'twenty',
随着GNU AWK这样你就可以一次读取使用-v RS='\0'
整个文件(也将与其他一些awks工作):
$ awk -v RS='\0' -v ORS= '{gsub(/\n{/,"{\n")}1' file
bla.update({
'test': {'tag': 'twenty',
与其他awks你可以使用一些其他的字符是不存在的输入文件,例如一个控制-C或类似的,而不是\0
如记录分隔符上方或可以这样做:
$ awk -v RS= -v ORS='\n\n' '{gsub(/\n{/,"{\n")}1' file
bla.update({
'test': {'tag': 'twenty',
但它将压缩的连续的空行序列到一个空行,并在末尾添加尾空白行如果其中一个还没有出现的话。
最后,您可以构建从整个文件内容的字符串读取使用任何AWK一次在一个行,然后在最后一节对字符串进行操作:
$ awk '{s=s $0 ORS} END{gsub(/\n{/,"{\n",s); printf "%s",s}' file
bla.update({
'test': {'tag': 'twenty',
只是移动的一般模式打开括号到前一行? – SheetJS
是的,那是唯一的确.. – Ron