我想知道是否有可能编写一个100%可靠的sed命令来转义输入字符串中的任何正则表达式元字符,以便它可以在后续的sed命令中使用.像这样:
#!/bin/bash
# Trying to replace one regex by another in an input file with sed
search="/abc\n\t[a-z]\+\([^ ]\)\{2,3\}\3"
replace="/xyz\n\t[0-9]\+\([^ ]\)\{2,3\}\3"
# Sanitize input
search=$(sed 'script to escape' <<< "$search")
replace=$(sed 'script to escape' <<< "$replace")
# Use it in a sed command
sed "s/$search/$replace/" input
Run Code Online (Sandbox Code Playgroud)
我知道有更好的工具可以使用固定字符串而不是模式,例如awk,perl或python.我想证明是否有可能sed.我会说让我们专注于基本的POSIX正则表达式,以获得更多乐趣!:)
我已经尝试了很多东西,但任何时候我都能找到一个打破了我的尝试的输入.我认为保持它是抽象的,因为script to escape不会导致任何人走错方向.
顺便说一下,讨论在这里提出来了.我认为这可能是收集解决方案的好地方,可能会破坏和/或详细说明.
我正在High Sierra 10.13.6上使用Mac版16.18的Excel。安装了适用于macOS的Connector / ODBC 8.0.12,并使用iODBC数据源管理(64位)测试了到我的数据库的连接,并工作:
当我尝试使用保存驱动程序和凭据与Excel连接时,出现以下错误:
Unicode和ANSI驱动程序都存在相同的问题。
我使用以下列顺序创建了一个viewson sql server:
当我选择视图时,下面是列的顺序 vwTable
Shift_id | Client_ip | Machine_Center
Run Code Online (Sandbox Code Playgroud)
但是当我要从excel中选择views使用时get external data:
SELECT * FROM vwTable
Run Code Online (Sandbox Code Playgroud)
列的顺序EXCEL不相同,输出为:
Machine_Center | Client_ip | Shift_id
Run Code Online (Sandbox Code Playgroud)
截图:
来自SSMS:
Select * from vwTable
Run Code Online (Sandbox Code Playgroud)

来自excel:获取外部数据
Select * from vwTable
Run Code Online (Sandbox Code Playgroud)

我的问题是列顺序必须相同 views
我已经通过 oledb 连接在 Windows pc 上的 Excel 2016 中编写了一个宏。但它在我的 Mac 中不起作用。我怎样才能运行这个?通常,在 Windows 中,您选择工具 > 引用并检查 oledb 连接,但 Excel Mac 中没有工具选项。我不知道代码在这里很重要,但无论如何我都会分享它。
Dim sorgu1 As String
Dim con As Object, rs As Object
Set con = CreateObject("adodb.connection")
Set rs = CreateObject("adodb.recordset")
con.Open "provider=microsoft.ace.oledb.12.0;data source=" & _
ThisWorkbook.FullName & ";extended properties=""Excel 12.0;hdr=yes"""
makine = Sheets("Dashboard").Cells(2, 11).Value
sorgu1 = "select [Resource Id], [Order No], Sum(([Bitim Zamani]-[Basl Zamani])*1440)" 'as Plansiz, Sum(([Bitim Zamani]-[Basl Zamani])*1440)as Planli, Sum([Qty]) as Uretim"
sorgu1 = sorgu1 + " from [Data$] where …Run Code Online (Sandbox Code Playgroud)