Sed használatát gyakorlom.
A file "nevek.txt" tartalma:
1, George Washington, 1984, 1345
2, John Adams, 1234, 4321,
3, Thomas Jefferson, 1022, 1230
....
A kimenetre ezt szeretném:
1, Washington George
2, Adams John
.....
Ez a parancs valamiért nem működik:
"sed -r 's/^([0-9]{1,2}), ([\w .]+?) ([\w ]+?), ([0-9]{1,4}),/\1\3\2/' nevek.txt"
Tudtok segíteni?
- 1352 megtekintés
Hozzászólások
Erre elég egy cut:
$ echo '1, George Washington, 1984, 1345' | cut -d, -f1-2
1, George Washington
UP: ja nem... a nevet ez nem fordítja... bocs
UP2: esetleg így?
$ echo '1, George Washington, 1984, 1345' | sed -r 's/^([0-9]+), ([^ ]+) ([^ ,]+).*/\1, \3 \2/'
1, Washington George
- A hozzászóláshoz be kell jelentkezni
-E ?
- A hozzászóláshoz be kell jelentkezni
sed -E 's/^([0-9]{1,2}), ([\w .]+?) ([\w ]+?), ([0-9]{1,4}),/\1\3\2/' nevek.txt
Kimenet:
1, George Washington, 1984, 1345
2, John Adams, 1234, 4321,
3, Thomas Jefferson, 1022, 1230
- A hozzászóláshoz be kell jelentkezni
awk
cat nevek.txt | awk '{ print $1 $3 $2 }' ?
- A hozzászóláshoz be kell jelentkezni
cat nevek.txt | awk '{ print $1 $3 $2}'
1,Washington,George
2,Adams,John
3,Jefferson,Thomas
Már csak a"," kéne valami
- A hozzászóláshoz be kell jelentkezni
a sed fontos es jo viszont sokat szamit az is, h olvashato legyen
cat nevek.txt | cut -d',' -f1-2 | awk '{ print $1" "$3" "$2}'
- A hozzászóláshoz be kell jelentkezni
awk-nak van beéptett substring metódusa, meg cat-et se értem minek pluszban forkolni.. akkor már ez ha awk megengedett:
# awk '{gsub (",",""); print $3,$2}' /tmp/nevek.txt
____________________________________
Az embert 2 éven át arra tanítják hogyan álljon meg a 2 lábán, és hogyan beszéljen... Aztán azt mondják neki: -"Ülj le és kuss legyen!"..
- A hozzászóláshoz be kell jelentkezni
bizonyos meret felett termeszetesen nem eri meg, nagy filenal of course en is hasonlot hasznalnek :)
- A hozzászóláshoz be kell jelentkezni
Add hozzá a mezőszeparátor karakterek litájához:
awk -F'[ ,]' '{ print $2, $1}' < nevek.txt
- A hozzászóláshoz be kell jelentkezni
Attol fugg hogy az evszamokat meg akarod-e tartani:
$ cat input.txt
1, George Washington, 1984, 1345
2, John Adams, 1234, 4321,
3, Thomas Jefferson, 1022, 1230
$ sed -E 's/(\w+)\ (\w+),/\2 \1,/g' input.txt
1, Washington George, 1984, 1345
2, Adams John, 1234, 4321,
3, Jefferson Thomas, 1022, 1230
$ sed -E 's/(\w+)\ (\w+),.*/\2 \1/g' input.txt
1, Washington George
2, Adams John
3, Jefferson Thomas
- A hozzászóláshoz be kell jelentkezni
Okay. Köszönöm szépen.
- A hozzászóláshoz be kell jelentkezni