Sed to regex column names
I have a SQL logfile with lots of SELECT statements with lots of columns. I want to replace the column names with *.
So
want to change SELECT T.A, T.B, T.B, T.C FROM TABLE T
to SELECT T.* FROM TABLE T
so I can to
s/T.[A-Z_]*//g
will get T. column names and replace them with nothing.
s/T.[A-Z_]*/T.*/g
Will do...
SELECT T.*, T.*, T.*, T.*
instead of
SELECT T.*
So how do I capture everything between the SELECT AND FROM and then replace it with T.*?
Thanks
regex sed
add a comment |
I have a SQL logfile with lots of SELECT statements with lots of columns. I want to replace the column names with *.
So
want to change SELECT T.A, T.B, T.B, T.C FROM TABLE T
to SELECT T.* FROM TABLE T
so I can to
s/T.[A-Z_]*//g
will get T. column names and replace them with nothing.
s/T.[A-Z_]*/T.*/g
Will do...
SELECT T.*, T.*, T.*, T.*
instead of
SELECT T.*
So how do I capture everything between the SELECT AND FROM and then replace it with T.*?
Thanks
regex sed
Trysed 's/<T.*( FROM)/T.*1/g'
, see demo.
– Wiktor Stribiżew
Nov 15 '18 at 15:41
add a comment |
I have a SQL logfile with lots of SELECT statements with lots of columns. I want to replace the column names with *.
So
want to change SELECT T.A, T.B, T.B, T.C FROM TABLE T
to SELECT T.* FROM TABLE T
so I can to
s/T.[A-Z_]*//g
will get T. column names and replace them with nothing.
s/T.[A-Z_]*/T.*/g
Will do...
SELECT T.*, T.*, T.*, T.*
instead of
SELECT T.*
So how do I capture everything between the SELECT AND FROM and then replace it with T.*?
Thanks
regex sed
I have a SQL logfile with lots of SELECT statements with lots of columns. I want to replace the column names with *.
So
want to change SELECT T.A, T.B, T.B, T.C FROM TABLE T
to SELECT T.* FROM TABLE T
so I can to
s/T.[A-Z_]*//g
will get T. column names and replace them with nothing.
s/T.[A-Z_]*/T.*/g
Will do...
SELECT T.*, T.*, T.*, T.*
instead of
SELECT T.*
So how do I capture everything between the SELECT AND FROM and then replace it with T.*?
Thanks
regex sed
regex sed
asked Nov 15 '18 at 15:38
More Than FiveMore Than Five
3,126105188
3,126105188
Trysed 's/<T.*( FROM)/T.*1/g'
, see demo.
– Wiktor Stribiżew
Nov 15 '18 at 15:41
add a comment |
Trysed 's/<T.*( FROM)/T.*1/g'
, see demo.
– Wiktor Stribiżew
Nov 15 '18 at 15:41
Try
sed 's/<T.*( FROM)/T.*1/g'
, see demo.– Wiktor Stribiżew
Nov 15 '18 at 15:41
Try
sed 's/<T.*( FROM)/T.*1/g'
, see demo.– Wiktor Stribiżew
Nov 15 '18 at 15:41
add a comment |
2 Answers
2
active
oldest
votes
You could maybe try:
sed 's/ ([A-Z].).*(FROM.*)/ 1* 2/g'
Output:
SELECT T.* FROM TABLE T
add a comment |
A better approach would be using a placeholder for an alias if it is possible for an alias to be something different than letter T
:
sed -r 's/([[:alnum:]_]+).[^ ,]+(, *1.[^ ,]+)+/1.*/g' file
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53322916%2fsed-to-regex-column-names%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
You could maybe try:
sed 's/ ([A-Z].).*(FROM.*)/ 1* 2/g'
Output:
SELECT T.* FROM TABLE T
add a comment |
You could maybe try:
sed 's/ ([A-Z].).*(FROM.*)/ 1* 2/g'
Output:
SELECT T.* FROM TABLE T
add a comment |
You could maybe try:
sed 's/ ([A-Z].).*(FROM.*)/ 1* 2/g'
Output:
SELECT T.* FROM TABLE T
You could maybe try:
sed 's/ ([A-Z].).*(FROM.*)/ 1* 2/g'
Output:
SELECT T.* FROM TABLE T
answered Nov 15 '18 at 15:52
l'L'll'L'l
31k55096
31k55096
add a comment |
add a comment |
A better approach would be using a placeholder for an alias if it is possible for an alias to be something different than letter T
:
sed -r 's/([[:alnum:]_]+).[^ ,]+(, *1.[^ ,]+)+/1.*/g' file
add a comment |
A better approach would be using a placeholder for an alias if it is possible for an alias to be something different than letter T
:
sed -r 's/([[:alnum:]_]+).[^ ,]+(, *1.[^ ,]+)+/1.*/g' file
add a comment |
A better approach would be using a placeholder for an alias if it is possible for an alias to be something different than letter T
:
sed -r 's/([[:alnum:]_]+).[^ ,]+(, *1.[^ ,]+)+/1.*/g' file
A better approach would be using a placeholder for an alias if it is possible for an alias to be something different than letter T
:
sed -r 's/([[:alnum:]_]+).[^ ,]+(, *1.[^ ,]+)+/1.*/g' file
answered Nov 15 '18 at 20:33
revorevo
33.6k135086
33.6k135086
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53322916%2fsed-to-regex-column-names%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Try
sed 's/<T.*( FROM)/T.*1/g'
, see demo.– Wiktor Stribiżew
Nov 15 '18 at 15:41