我不是Linux脚本专家,而且我已经用尽了这方面的知识。这是我的情况。
我有一个状态列表作为命令行参数传递给shell脚本(例如“AL,AK,AS,AZ,AR,CA ......”)。 Shell脚本需要提取每个状态代码并将其写入文件(states.txt),每个状态在一行中。见下文
AL
AK
AS
AZ
AR
CA
..
..
如何使用linux shell脚本实现这一目标。
提前致谢。
答案 0 :(得分:5)
使用tr
:
echo "AL,AK,AS,AZ,AR,CA" | tr ',' '\n' > states.txt
答案 1 :(得分:3)
echo "AL,AK,AS,AZ,AR,CA" | awk -F, '{for (i = 1; i <= NF; i++) print $i}';
答案 2 :(得分:1)
天真的解决方案:
echo "AL,AK,AS,AZ,AR,CA" | sed 's/,/\n/g'
答案 3 :(得分:-1)
我认为awk是最简单的解决方案,但您可以尝试在循环中使用cut
。
示例脚本(输出到stdout,但您可以重定向它):
#!/bin/bash
# Check for input
if (( ${#1} == 0 )); then
echo No input data supplied
exit
fi
# Initialise first input
i=$1
# While $i still contains commas
while { echo $i| grep , > /dev/null; }; do
# Get first item of $i
j=`echo $i | cut -d ',' -f '1'`
# Shift off the first item of $i
i=`echo $i | cut --complement -d ',' -f '1'`
echo $j
done
# Display the last item
echo $i
然后您可以将其作为./script.sh "AL,AK,AS,AZ,AR,CA" > states.txt
运行(假设您将其保存为本地目录中的script.sh并赋予其执行权限)