62
votes
How can I do a 'change word' in Vim using the current paste buffer?
The Vim way is to learn how to intentionally use the yank, delete and other registers. Once you know these, you will easily find your own key sequences to do this.
Register "0 is the yank ...
51
votes
Accepted
using sed with ampersand (&)
& is special in the replacement text: it means “the whole part of the input that was matched by the pattern”, so what you're doing here replaces user=&uidX with user=user=&uidXsysuserid.. ...
26
votes
Accepted
In `sed` how can I put one "&" between characters in a string?
With GNU sed:
sed 's/./\&&/2g'
(substitute every (g) character (.) with the same (&) preceded with & (\&) but only starting from the second occurrence (2)).
Portably:
sed 's/./\...
20
votes
Accepted
Editing a child JSON element value with jq
(Posting @glennjackman comment as a community answer to prevent system from autodeleting the question)
jq '.body.test2 = ["hi"]' will do it
20
votes
Is it possible to replace duplicates of a character with one character using tr
Using tr -s:
$ echo 'ab ### cde fghi## jklm' | tr -s '#'
ab # cde fghi# jklm
-s Squeeze multiple occurrences of the characters listed in the last operand (either string1 or string2) in the ...
18
votes
How can I replace a character within a specific context in each line of the whole file?
an awk version (you'll need a relay file, you can one-line it)
awk '/\\phrase/ { p=NR ; }
NR == p+3 { gsub("r","ɹ") ; }
{print;} ' old-file.tex > new-file.tex
where
...
17
votes
15
votes
In `sed` how can I put one "&" between characters in a string?
Unix utilities:
fold -w1|paste -sd\& -
Explained:
"fold -w1" - will wrap an each input character to its own line
fold - wrap each input line to fit in specified width
-w, --width=WIDTH ...
12
votes
Replace all values in one column to 1
try
awk
awk '{$3=1 ; print ;}' oldfile > newfile
$3 = 1 will set third field to 1
sed (here GNU or busybox sed with its -i option for in-place editing)
sed -i 's/[0-9.]*$/1/' file
[0-9.]*$ is a ...
11
votes
How to replace the content of a specific column with awk?
To reserve the original Field-Seprator, I did this.
The column I wanted to blank-out was number $12.
awk -F"\t" '{OFS=FS}{ $12="" ; print }' infile.txt > outfile.txt
With gawk -i , if you have ...
11
votes
Accepted
Btrfs RAID1: How to replace a disk drive that is physically no more there?
Update: According to @mkudlacek, this problem has been fixed.
For prosperity, here is my answer to why in 2017, I could not rebuild a RAID with a missing drive.
Turns out that this is a limitation of ...
11
votes
Btrfs RAID1: How to replace a disk drive that is physically no more there?
replace needs the filesystem to be mounted rw to operate.
In a degraded BTRFS RAID1 filesytem, you have one and only one chance to mount the filesystem rw using -o degraded:
degraded
(...
11
votes
11
votes
How can I replace a character within a specific context in each line of the whole file?
awk 'c&&!--c {gsub(/r/,"ɹ")} /\\phrase/ {c=3} 1' file > newfile
c&&!--c is a common awk idiom, implementing the while getline logic, see reference.
The action following ...
10
votes
How can I do a 'change word' in Vim using the current paste buffer?
Go to visual mode by pressing v to capture the interesting text, and copy it by pressing y. Now capture the text you want delete, and press p for pasting.
10
votes
Accepted
Rename multiple files with 2 conditions/replacements in one line?
Maybe you need to be using the perl rename command. On my CentOS box, it's called 'prename'.
$ ls
IMG_1.JPG IMG_2.JPG IMG_3.JPG
$ prename 's/^IMG/img/;s/\.JPG$/\.jpg/' *JPG
$ ls
img_1.jpg img_2....
10
votes
Accepted
Bash string range and replace
You can't stack/nest parameter expansion in Bash, so not even
echo "${${q:16:6}/,/.}"
will work. (Nested expansions like that do work in Zsh, though.)
If you want to stay within Bash, you'll need ...
10
votes
Accepted
Add one second to yyyymmddhhmmss with awk
With GNU awk or @ThomasDickey's mawk¹:
$ gawk -F'|' -v OFS='|' '{
gsub("..", "& ", $7)
sub(" ", "", $7)
$7 = strftime("%Y%m%d%H%M%S", ...
9
votes
In `sed` how can I put one "&" between characters in a string?
sed 's/\B/\&/g'
\B - Matches everywhere but on a word boundary; that is it matches if the character to the left and the character to the right are either
both “word” characters or both “non-...
9
votes
Accepted
Replacing backslashes with forward slash within double quotes
find + GNU sed solution:
find . -type f -name "*.[ch]" -exec sed -i '/^#include / s|\\|/|g' {} +
"*.[ch]" - wildcard to find files with extension .c or .h
-i: GNU sed extension to edit the files in-...
9
votes
Accepted
Is there a way to replace last occurrence of match using a shell variable substitution?
Note: this replaces a trailing occurrence - not quite the same as "the last occurrence"
From the Bash reference manual Section 3.5.3 Shell Parameter Expansion
:
${parameter/pattern/string}
...
9
votes
Accepted
How can I replace a character within a specific context in each line of the whole file?
Since you're on Emacs...
The Evil/Vim Way
If you have evil-mode installed (or you switch to Vim), you can do this:
:g/^\\phrase/+3s/r/ɹ/g
That's the simplest.
The Keyboard Macro Way
Staying with ...
8
votes
Accepted
Replacing a Part of URL String in a Linux File With Another String
/ is default sed subexpression separator, use another one:
sed -i 's~http://www.test.org/name~http://www.test.org/archive/name~g' user.html
8
votes
Accepted
Running several sed commands on same files simultaneously
You can give several expressions to sed in one invocation:
sed -e 'expr' -e 'expr' -e ...
In your case:
sed -e 's/foo/bar/g' -e 's/NAME/name/g'
The expressions will be applied to each line of ...
8
votes
Accepted
How to replace last occurence of a character?
For your given data in a file called input:
$ awk -F\; 'BEGIN {OFS=";"} { if( $3 == 1 ) { print $1,$2,"inactive" } else { print $1,$2,"active" } }' input
199240050;0180209199240050;active
199240241;...
8
votes
Accepted
A posix-compliant function for replace text with parameters and regex
Escaping the / only is very difficult to do with sed because for instance it would have to be escaped in:
Foo/bar
Foo[XY]/
Foo\[/x\]
Foo\\/bar
But not in
Foo [/x]bar
Foo [^]/x]bar
Foo [x[:blank:]/...
8
votes
Is there a way to replace last occurrence of match using a shell variable substitution?
You can do this with shell substitutions its just a bit tricky. You basically grab everything before the pattern insert your replacement and than grab everything after the pattern. For your example ...
7
votes
SED command to replace "[Word1 Word2]" to nothing
The square brackets [ and ] are special characters in sed. You must escape them with a backslash, like so:
sed -i -e 's/\[Word1 Word2\]//g'
7
votes
Change delimiter in a CSV file
You basically have a CSV file that you would like to replace the delimiter in, from , to ~.
Using csvkit:
$ csvformat -D '~' file.csv >newfile.csv
$ cat newfile.csv
123~ABC, DEV 23~345~534.202~...
7
votes
Accepted
Replacing two patterns in a text files at the same time
I think, since you are only swapping singular characters, tr may be a good tool for the job.
Try something like this:
tr '0?' '?0' < log.txt
Only top scored, non community-wiki answers of a minimum length are eligible
Related Tags
replace × 448sed × 230
text-processing × 95
awk × 68
regular-expression × 59
search × 56
bash × 52
find × 38
string × 38
shell-script × 33
linux × 29
files × 20
shell × 19
grep × 19
vim × 17
perl × 13
text × 12
command-line × 11
xml × 11
scripting × 9
csv × 9
text-formatting × 7
rename × 6
tr × 6
filenames × 5