echo "./Desktop/data.txt"| cut -f 1 -d ":"
以上行使用分隔符“:”
剪切特定字段但是,如果我的文件包含多行,我怎么能用分隔符“:”来剪切特定行和特定字段?
答案 0 :(得分:3)
这是AWK的理想任务:
var addUp = function(counterId) {
var count = 0;
return function () {
var counterEle = document.getElementById(counterId);
if (counterEle)
counterEle.innerHTML = "Picture Clicks: " + ++count;
}
};
var catImage = document.getElementById("cat-image");
catImage.addEventListener("click", addUp("cat-counter-id"), false);
awk -F: 'NR == 2 {print $2}' "./Desktop/data.txt"
将字段分隔符设置为-F:
:
是一种模式,意思是“记录(行号)等于2”NR == 2
是在模式匹配上执行的操作,意思是“打印第二个字段”答案 1 :(得分:2)
我将使用
模拟data.txt
文件
datatxt="Line 1 without colon
I want this:the part before the colon
nope, not me
other line with colon:that can be found"
您的命令显示所有行的第一个字段
echo "${datatxt}" | cut -f 1 -d ":"
Line 1 without colon
I want this
nope, not me
other line with colon
首次使用:
时,您可以获得grep
行:
echo "${datatxt}" | grep ":" | cut -f 1 -d ":"
I want this
other line with colon
您可以为一行输出附加| head -1
这些说明也可以使用sed
完成。
使用sed,您可以删除冒号后的所有内容:
echo "${datatxt}" | sed 's/:.*//'
Line 1 without colon
I want this
nope, not me
other line with colon
在sed
中添加grep可以通过查找/:/
的行来完成
您应该将其与-n
和p
结合使用。
echo "${datatxt}" | sed -n '/:/ s/:.*//p'
I want this
other line with colon
如果需要一行输出,可以使用
echo "${datatxt}" | sed -n '/:/ s/:.*//p' | sed -n '1p'
# OR SHORTER
echo "${datatxt}" | sed -n '/:/ {s/:.*//p;q}'
答案 2 :(得分:1)
如果您选择基于行号的行,则可以使用sed。例如,对于第10行,请执行:
cat "./Desktop/data.txt"| cut -f 1 -d ":" | sed -n 10p
如果你需要根据包含特定值的那一行选择一行,那么我会使用grep。如果该值与您正在切割的列不在一列,则请确保在切割之前进行grep。
注意:原帖上写着“./Desktop/data.txt”,我假设那应该是cat,而不是echo。