Hello and happy new year. I have a question;i have a file named shipsIMO.txt in unix which contains the imo code of ships like:
IMO84855
IMO58484
How can I have as an output only the numbers using a bash script? Am I close?
echo "shipsIMO.txt"|tr -cd [:digit:]>single.txt
CodePudding user response:
How can I have as an output only the numbers
In that case, you are very close. echo "shipsIMO.txt" will not print the content of the file. It'll literally print shipsIMO.txt. To print the content of the file, use cat:
cat shipsIMO.txt | tr -cd '[:digit:]' > single.txt
or without cat, making tr read directly from the file:
tr -cd '[:digit:]' < shipsIMO.txt > single.txt
Both versions above would create single.txt with the content (no spaces or newlines):
8485584855
If you want to ...
# keep whitespaces (including newlines) and digits:
tr -cd '[:space:][:digit:]' < shipsIMO.txt > single.txt
# keep only newlines and digits:
tr -cd '\n[:digit:]' < shipsIMO.txt > single.txt
Both would produce single.txt with this content:
84855
84855
CodePudding user response:
You can do this easily with sed, removing all non-numeric characters:
sed -e 's/[^0-9]//g' shipsIMO.txt
CodePudding user response:
You can try with sed to remove all IMO string, it will work with space and line break:
sed 's/IMO//g' shipsIMO.txt > single.txt
