Shell, Grep and Sed
Solved/Closed
Bugz
-
1 Dec 2008 à 05:51
Sacabouffe Posts 9427 Registration date Saturday 18 August 2007 Status Member Last seen 29 May 2009 - 5 Dec 2008 à 12:08
Sacabouffe Posts 9427 Registration date Saturday 18 August 2007 Status Member Last seen 29 May 2009 - 5 Dec 2008 à 12:08
Related:
- Shell, Grep and Sed
- Sed delete line - Guide
- Dos2unix sed - Guide
3 responses
Sacabouffe
Posts
9427
Registration date
Saturday 18 August 2007
Status
Member
Last seen
29 May 2009
19
1 Dec 2008 à 16:44
1 Dec 2008 à 16:44
Hi
Mmm... These strings are rather annoying because they correspond to 2 columns in fact.
The only idea I have (surely not the best) is first to replace the strings composed by 2 words and a space by only one full string.
Are STANDING ORDER and DIRECT DEBIT the only kind of strings you have ?
If it's the case, what I suggest is (suppose your file is called data.txt) :
See you !
Mmm... These strings are rather annoying because they correspond to 2 columns in fact.
The only idea I have (surely not the best) is first to replace the strings composed by 2 words and a space by only one full string.
Are STANDING ORDER and DIRECT DEBIT the only kind of strings you have ?
If it's the case, what I suggest is (suppose your file is called data.txt) :
sed 's/G O/G_O/g' data.txt > data_mod.txt sed 's/T D/T_D/g' data_mod.txt > data.txt rm data_mod.txtThen you really have 3 columns and you can extract them with awk for example, it is :
cat data.txt | awk -F " " '{print $1}' > column1.txt
cat data.txt | awk -F " " '{print $2}' > column2.txt
cat data.txt | awk -F " " '{print $3}' > column3.txt At last, you can modify the second file column2.txt to have the second column like it was :
sed 's/G_O/G O/g' column2.txt > column2_mod.txt sed 's/T D/T_D/g' column2_mod.txt > column2.txt rm column2_mod.txtIs it more or less what you wanted to do ?
See you !
jipicy
Posts
40842
Registration date
Wednesday 27 August 2003
Status
Moderator
Last seen
10 August 2020
17
4 Dec 2008 à 12:04
4 Dec 2008 à 12:04
Hi,
[tmpfs]$ cat file.txt 26/10/01 686856 70.00 26/10/01 STANDING ORDER 1301.25 27/10/01 686849 580.00 28/10/01 653937 21.00 29/10/01 653938 20.00 29/10/01 686855 76.72 29/10/01 DIRECT DEBIT 10.00 29/10/01 DIRECT DEBIT 44.00 29/10/01 STANDING ORDER 23.00 [tmpfs]$ sed 's/ /,/1;s/\(.*\) \(.*\)/\1,\2/' file.txt 26/10/01,686856,70.00 26/10/01,STANDING ORDER,1301.25 27/10/01,686849,580.00 28/10/01,653937,21.00 29/10/01,653938,20.00 29/10/01,686855,76.72 29/10/01,DIRECT DEBIT,10.00 29/10/01,DIRECT DEBIT,44.00 29/10/01,STANDING ORDER,23.00 [tmpfs]$;-))
Sacabouffe
Posts
9427
Registration date
Saturday 18 August 2007
Status
Member
Last seen
29 May 2009
19
5 Dec 2008 à 12:08
5 Dec 2008 à 12:08
Hi
I'll try to understand... one of these days... :-DDD
See you ;-)
sed 's/ /,/1;s/\(.*\) \(.*\)/\1,\2/' file.txtO_o
I'll try to understand... one of these days... :-DDD
See you ;-)